每次我开始使用一些图形工具包启动一个项目时,第一个冲突就是如何处理视觉设计和小部件布局的决定:使用图形工具还是手写代码?
这是一个相当棘手/主观的问题,因为大多数人会根据个人偏好来做出决定。 这也在很大程度上取决于图形工具的质量。 在这种情况下,我想仅集中在QT库的最新版本上。 我不打算讨论哪种方法更好。 我相信最好的答案是:取决于项目。
我想要的是一个好的、没有偏见的文章参考,基于几个项目后的经验。该文章应该只描述两种选择的权衡。
每次我开始使用一些图形工具包启动一个项目时,第一个冲突就是如何处理视觉设计和小部件布局的决定:使用图形工具还是手写代码?
这是一个相当棘手/主观的问题,因为大多数人会根据个人偏好来做出决定。 这也在很大程度上取决于图形工具的质量。 在这种情况下,我想仅集中在QT库的最新版本上。 我不打算讨论哪种方法更好。 我相信最好的答案是:取决于项目。
我想要的是一个好的、没有偏见的文章参考,基于几个项目后的经验。该文章应该只描述两种选择的权衡。
我的回答是基于使用PyQt4(Python绑定到Qt 4)和OpenGL开发生物化学应用程序两年的经验。我们只使用C ++进行性能关键算法,因此我没有使用C ++ Qt。尽管如此,PyQt4 API非常类似于Qt4,因此仍然适用于很多内容。
Qt Designer
手工编码
好处:
坏处:
提示
不要立即开始创建窗口。首先快速草绘几个可能的设计,可以使用纸张或诸如Balsamiq Mockups之类的工具。虽然您可以在Qt Designer中完成此操作,但我认为在您甚至没有确定最佳设计之前,花费大量时间使您的窗口看起来完美太诱人了。
如果你在PyQt中使用Qt Designer,你需要额外运行pyuic4将*.ui文件编译成Python源代码文件。我发现很容易忘记这一步并且为什么我的更改不起作用而感到困惑。
如果你手动编写UI,建议把布局代码和信号槽代码分别放在两个位置。这样做可以更容易地在不影响应用程序逻辑的情况下更改窗口上小部件的排列方式。或者你可以更改某些行为而不必浏览所有的布局代码。
享受Qt!现在我正在使用Java Swing工作,我很怀念它。
我倾向使用设计师来布置对话框,但是所有事件处理都在主要的代码中完成。我也会用直接的代码创建所有的主窗口、工具栏和菜单。
设计师只是令人沮丧 - 可惜的是,像拖放调整大小的设计师已有十多年的历史。
这取决于您的应用程序需要多少个不同的窗口/面板。如果数量较少,请使用图形工具。这样可以更快地设计出几个完美的窗口。如果数量很大,则图形工具只能(并且应该)用于原型。您需要编写布局代码,以便能够以可接受的成本进行应用程序范围的更改。
这包括创建应用程序 UI 如何工作的模型,并在运行时动态添加和删除小部件。关于这种模型的一个很好的例子(在不同的环境中)是 glamour model 用于创建对象浏览器。
我反对这种选择是棘手/主观的建议(至少比其他开发选择更棘手/主观)。很容易想出决定的标准。个人经验和偏好对此非常重要,因为它们决定了何时应将不同窗口的数量视为较少。同样适用于工具质量。
这是我的个人观点(仅代表个人),所有基于GUI的开发会让我太分心了,当我看到GUI对象时,我的想象力或者思维能力都会变得很差,因此我更喜欢手写代码,因为这样我的想象力更强。你知道的,就像读一本没有图像的书一样……当我只看到代码时,感觉速度更快。
第二个原因是,我非常喜欢C ++,所以我认为手写代码的好处在于即使我写了一些重复的东西,我也可以保持我的C++实践...... 只有使用文本才能提高编码技巧...... 当然,我可以使用nano或vim,但那太慢了,不适合调试。
在这里,手写代码++赞成。
我使用两者的结合:
对于x,y坐标,我觉得Designer是最好的选择。
其他UI属性等可以在代码中设置。
我认为完全手动编码UI会是一个非常耗时的项目。这不像设置HTML表格那么简单。
是的,第四版很糟糕,但是在工作中使用第三版的人说它真的很糟糕。经常崩溃。
我和我的QT同事们都真心希望第五版能有所改进。
我知道这是一个老问题,但我希望这能有所帮助!一个人的经验。