Qt默认为setupUi的“标准”

时间:2013-09-10 19:18:42

标签: qt qt4

从我所看到的,大多数Qt教程都有一个名为“setupUi”的主要功能,用于创建小部件和应用程序的布局。

但是,假设你有一个包含许多小部件的大型应用程序,你最终会得到一个非常长的setupUi方法,我认为这非常不切实际。

我的问题:在Qt的深层暗秘中,是否有任何规则规定有人应该在setupUi函数中定义所有小部件和所有布局。这有什么特别的原因吗?或者我可以将布局拆分为(将在setupUi中调用)包含应用程序不同部分的组件的函数。

2 个答案:

答案 0 :(得分:3)

AFAIK,setupUi()[通常]用于Qt设计器表单中uic实用程序生成的文件。没有这样的惯例 这就是QWidget上的文档所说的:

  

设置指定小部件的用户界面。

     

注意:此功能适用于从用户派生的小部件   使用uic创建的界面描述。

在这种情况下,我没有看到任何规则规范。事实上,我已经看到许多用户制作的小部件(不使用Designer)使用构造函数进行基本初始化,或者使用一些任意方法。

我个人有时会在插槽上创建小部件,通常不存储指向所有小部件的指针,让对象所有权完成其工作 - 几乎不需要访问它们。

我尝试遵循此规则:编写易于阅读和维护的代码。
事实上,我更容易让我的主窗口包含很少的复合小部件,其中包含一些其他复合小部件......每个小部件都是独立的逻辑单元。

答案 1 :(得分:2)

并非所有Qt应用程序都使用该功能,这是工具生成的代码的一部分(从Qt Designer xml开始),阅读this文档页面,了解有关如何使用这些工具的更多详细信息在代码中生成C ++代码。

因此,基本上对于使用Designer创建的窗口小部件和布局,setupUi用于创建/设置和布局窗口小部件(生成代码,因此您不需要使生活复杂化并修改它),但以防万一你自己编写小部件和布局(只是代码,而不是使用Designer)你可以随意命名函数,你可以将所有这些编写成类构造函数或将代码分成函数,只调用构造函数中的一些或您甚至可以在任何您喜欢的地方创建和布局小部件(插槽连接到按钮单击或其他信号),还可以编写代码以将小部件添加到Designer布局中。