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