据我所知,大多数 Qt 教程都有一个名为“setupUi”的主要功能,用于创建小部件和应用程序的布局。
但是,假设您有一个包含许多小部件的大型应用程序,您最终会得到一个非常长的 setupUi 方法,我认为这非常不切实际。
我的问题:在 Qt 的深奥秘密中,是否有任何规则规定有人应该在 setupUi 函数中定义所有小部件和所有布局。这有什么特别的原因吗?或者我可以将我的布局拆分为函数(将在 setupUi 中调用),其中包含我的应用程序不同部分的组件。
AFAIK,setupUi() [通常] 用于由uic
实用程序从 Qt 设计器表单生成的文件。没有这样的约定这是 QWidget 上的文档所说的:
为指定的小部件设置用户界面。
注意:此功能适用于派生自使用 uic 创建的用户界面描述的小部件。
在这种情况下,我没有看到任何规则规范等。事实上,我已经看到许多用户制作的小部件(不使用 Designer)使用构造函数进行基本初始化,或者一些任意方法。
我个人有时会在插槽上创建小部件,并且通常不会存储指向所有这些小部件的指针,让对象所有权来完成它的工作 - 几乎总是不需要访问它们。
我尝试遵循这个规则:编写易于阅读和维护的代码。
事实上,让我的主窗口包含几个复合小部件更容易,这些小部件包含一些其他复合小部件......它们中的每一个都是独立的逻辑单元。
并非所有 Qt 应用程序都使用该功能,这是工具生成的代码的一部分(从 Qt Designer xml 开始),请阅读此文档页面以获取有关如何将工具生成的 C++ 代码用于代码的更多详细信息。
所以基本上对于使用设计器创建的小部件和布局,setupUi 用于创建/设置和布局小部件(生成该代码,因此您不需要复杂化您的生活并对其进行修改),但如果您编写代码自己的小部件和布局(只是代码,而不是使用设计器)您可以随意命名函数,您可以将所有这些代码编写到类构造函数中,或者将代码分成函数并仅从构造函数中调用其中的一些函数,或者您甚至可以几乎可以在您喜欢的任何位置创建和布局小部件(连接到按钮单击或其他信号的插槽),您还可以编写代码将小部件添加到设计器布局中。