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