每次我用一些图形工具包开始一个项目时,第一个冲突都会发生在如何处理视觉设计和小部件布局的决定上:图形工具还是手工编码?
这是一个相当棘手/主观的问题,因为大多数人会根据个人喜好做出决定。它还很大程度上取决于图形工具的质量。在这种情况下,我想只关注最新版本的 QT 库。我不打算讨论哪种方法更好。我坚信最好的答案是:取决于项目。
我想要的是参考一篇好的无偏见文章,基于几个项目后的经验。这篇文章应该只描述两种选择的权衡
每次我用一些图形工具包开始一个项目时,第一个冲突都会发生在如何处理视觉设计和小部件布局的决定上:图形工具还是手工编码?
这是一个相当棘手/主观的问题,因为大多数人会根据个人喜好做出决定。它还很大程度上取决于图形工具的质量。在这种情况下,我想只关注最新版本的 QT 库。我不打算讨论哪种方法更好。我坚信最好的答案是:取决于项目。
我想要的是参考一篇好的无偏见文章,基于几个项目后的经验。这篇文章应该只描述两种选择的权衡
我开始做所有的手工编码,最近已经切换到使用 Qt Designer 来处理大多数表单。以下是每个职位的一些好处:
使用 Qt 设计器
手工编码
各种各样的
QWizard
表单,我发现我需要为每个页面使用不同的 UI 文件。您可以一次性完成所有操作,但是以任何一种自定义方式在页面之间进行通信都会变得非常尴尬。总之,我从 Qt Designer 开始,让它尽可能地带我走,然后从那里手动编码。这是 Qt Designer 生成的一件好事——它只是成为您的类的成员的另一个类,您可以根据需要访问和操作它。
我的答案基于两年来使用 PyQt4(Python 绑定到 Qt 4)和 OpenGL 开发生物化学应用程序。我没有做过 C++ Qt,因为我们只将 C++ 用于性能关键算法。也就是说,PyQt4 API 与 Qt4 非常相似,所以这里仍然适用。
Qt 设计器
手工编码
好的
坏的
提示
不要只是跳入创建窗口。首先在纸上或使用 Balsamiq Mockups 之类的工具快速绘制几种可能的设计草图。尽管您可以在 Qt Designer 中执行此操作,但我认为在您确定它是否是最佳设计之前,花费大量时间试图让您的窗口看起来恰到好处是太诱人了。
如果您使用 Qt Designer for PyQt,则需要运行 pyuic4 以将 *.ui 文件编译为 Python 源文件的额外步骤。我发现很容易忘记这一步,并想一想为什么我的更改不起作用。
如果您手动编写 UI,我建议您将布局代码放在一个地方,将信号和插槽放在另一个地方。这样做可以更轻松地更改窗口小部件的排列方式,而不会影响任何应用程序逻辑。或者您可以更改一些行为,而无需遍历所有布局代码。
享受Qt!现在我正在使用 Java Swing 工作,我很想念它。
我倾向于使用设计器来布局对话框,但我在主代码中完成所有事件处理工作。我还在直接代码中完成所有主窗口、工具栏、菜单。
设计师只是令人沮丧 - 遗憾的是,基于拖放大小的设计师已经存在了十多年
这取决于您的应用程序所需的不同窗口/面板的数量。如果数量很少,请使用图形工具。获得一些完美设计的窗户要快得多。如果数量很大,则图形工具可以(并且应该)仅用于原型。您需要对布局进行编码,以便能够以可接受的成本进行应用程序范围的更改。
这包括创建应用程序 UI 如何工作的模型以及在运行时动态添加和删除小部件。对于这种模型的一个很好的例子(在不同的环境中),看看用于创建对象浏览器的魅力模型。
我反对它是棘手/主观的建议(至少比其他开发选择更多)。很容易提出标准来决定。个人经验和偏好对此很重要,因为它们决定了何时应将不同窗口的数量视为较小。工具质量也是如此。
我的个人意见(只是个人意见),所有基于 GUI 的开发都让我分心,当我看到 gui 对象时,我的想象力或我的头脑工作得非常糟糕,我大多数时候更喜欢手工编码,因为我的想象力更好,你知道,就像您正在阅读一本没有图像的书...当我只看到代码时,它看起来我完成得更快...
第二个原因,我非常喜欢 c++,所以我看到了手工编码的好处,就是我保持我的 c++ 练习,无论我是否写一些多余的东西......当你只使用文本时,编码技能会得到提高。 . 确实,我可以使用 nano 或 vim,但这对于调试来说太慢了。
在这里手工编码++投票
我使用两者的组合:
我发现 x,y 坐标,Designer 是要走的路。
可以在您的代码中设置许多其他 UI 属性等。
我认为尝试完全通过手工编码来完成 UI 将是一个非常耗时的项目。它不像设置 HTML 表格那么简单。
是的,版本 4 很糟糕,但是使用过版本 3 的工作人员说它真的很糟糕。很多崩溃。
我和我的 QTers 伙伴们真心希望第 5 版能有所改进。
我知道这是一个老问题,但我希望这会有所帮助!一个人的经历。