每当我用一些图形工具包开始一个项目时,最初的冲突之一就是如何处理视觉设计和小部件布局:图形工具还是手动编码?Qt Designer vs Handcoding
这是一个非常棘手/主观的问题,因为大多数人会根据个人喜好来决定。它也很大程度上取决于图形工具的质量。在这种情况下,我想专注于最新版本的QT库。我不打算讨论哪种方法更好。我相信最好的答案是:取决于项目。
我想要的是一个很好的非偏见文章的参考,基于几个项目后的经验。这篇文章应该只是描述两种选择的权衡
每当我用一些图形工具包开始一个项目时,最初的冲突之一就是如何处理视觉设计和小部件布局:图形工具还是手动编码?Qt Designer vs Handcoding
这是一个非常棘手/主观的问题,因为大多数人会根据个人喜好来决定。它也很大程度上取决于图形工具的质量。在这种情况下,我想专注于最新版本的QT库。我不打算讨论哪种方法更好。我相信最好的答案是:取决于项目。
我想要的是一个很好的非偏见文章的参考,基于几个项目后的经验。这篇文章应该只是描述两种选择的权衡
我开始做所有的手工编码,最近已经开始使用Qt Designer来处理大多数表单。下面是每个位置的一些优势:
使用Qt设计
手工编码
其他
QWizard
表单,我发现我需要为每个页面使用不同的UI文件。您可以一次完成所有工作,但以任何类型的自定义方式在页面之间进行通信变得非常尴尬。总之,我从Qt Designer开始,让它尽可能地带我,然后从那里手工编写代码。这是Qt Designer生成的一件好事 - 它只是成为类的一员的另一个类,您可以根据需要访问它并对其进行处理。
我倾向于使用设计器布局对话框,但我在主代码中执行所有事件处理。我也做直接代码中的所有主窗口,工具栏,菜单。
设计师只是令人沮丧的 - 可惜,因为体面的拖放式分级机基于设计师已经存在了十多年
+1了解。我也在主代码中完成了所有的事件处理工作,但随着时间的推移,这引起了一个巨大的部分,它为“小部件”提供了“连接”语句。最近,我决定尽可能多地(即与非动态控制)与设计师(我承认这是一个痛苦)。至少在这种情况下,GUI和代码有进一步的分离。顺便说一下,对于动态控件,我尝试在设计器中使用虚拟控件,并将其推广到实际的类,所以我可以通过打开ui文件来获得关于GUI的感觉。 – dashesy 2012-02-15 00:55:05
我用两者的结合:
我找到对于x,y坐标,设计师是要走的路。
许多其他UI属性等可以在您的代码中设置。
我认为试图完全通过手工编写UI将是一个非常耗时的项目。这不像设置HTML表格那么简单。
是的版本4是坏的,但在工作中使用过版本3的人说这是非常糟糕的。很多的崩溃。
我和我的QTers一起真的希望版本5会有所改进。
我知道这是一个老问题,但我希望这有助于!一个人的经验。
我从来没有理由使用x,y坐标。 Qt布局功能强大。如果使用x和y坐标,当窗口重新调整大小时会发生什么? HTML在这里是一个很差的类比,因为你不应该使用HTML表格来做布局。将Qt的布局与CSS比较会更有意义。 – 2012-02-09 19:50:58
我的答案基于两年来使用PyQt4(Python绑定到Qt 4)和OpenGL开发生物化学应用程序。我没有完成C++ Qt,因为我们只使用C++来处理性能关键的算法。也就是说,PyQt4 API非常类似于Qt4,这里仍然适用。
Qt设计
手工编码
好
坏
提示
不要只是跳进创建窗口。首先快速勾画几种可能的设计,无论是在纸上还是使用像Balsamiq Mockups这样的工具。尽管你可以在Qt Designer中做到这一点,但我认为在你甚至决定它是否是最好的设计之前花费大量时间试图让你的窗户看起来太过诱人。
如果你使用Qt Designer进行PyQt,你需要额外的步骤来运行pyuic4来编译* .ui文件到Python源文件。我发现忘记这一步很容易,并且为了我的更改无法正常工作而搔首弄姿。
如果您手工编写您的用户界面,我建议将您的布局代码放在一个地方,并将您的信号和插槽放在另一个地方。这样做可以更轻松地改变窗口小部件在窗口上的排列方式,而不会影响任何应用程序逻辑。或者你可以改变一些行为,而不必通过所有的布局代码。
享受Qt!现在我正在使用Java Swing工作,我很想念它。
这取决于您的应用程序所需的不同窗口/面板的数量。如果数字很小,请使用图形工具。获得完美设计的几个窗口要快得多。如果数字很大,图形工具可以(也应该)仅用于原型。您需要对布局进行编码,才能以可接受的成本进行应用范围内的更改。
这包括创建应用程序的UI如何工作的模型以及在运行时动态添加和删除小部件。对于这种模型的一个很好的例子(在不同的环境中),请看glamour model来创建对象浏览器。
我反对这个建议,它是棘手/主观的(至少比其他发展选择更多)。拿出决定的标准很容易。个人经验和偏好对此非常重要,因为他们决定何时应该将不同窗口的数量视为较小。刀具质量也是如此。
使用手工编码时,如果以正确的方式进行操作,则不存在样板布局代码。这些都隐藏在你的UI构建类中。翻译也很容易,因为您可以使用来自相同UI构建类的文本生成模型。 – 2012-02-15 15:17:45