企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 10.4 运行时加入处理.ui 文件的方法 借助 Qt 提供的 QtUiTools 模块以及其中的 QUiLoader 类我们可以实现在运行时获取并 加载.ui 文件。我们可以使用任何 QIODevice 的实例来读取用户界面架构,通常使用 QFile 类的实例。QUiLoader::load() 方法读取了.ui 文件中包含的界面架构并将它赋予一个 QWidget 子类化的实例。 本节介绍的实例名为 calculatorbuilder,仍然实现简单的加法计算功能,只不过是采 用动态加载.ui 文件的方法完成的。 要实现动态加载 ui,首先需在程序中包含 QtUiTools 模块的头文件: ``` #include <QtUiTools> ``` 然后新建一个.qrc 文件,描述.ui 文件的路径: ``` <!DOCTYPE RCC><RCC version="1.0"> <qresource prefix="/forms"> <file>calculatorform.ui</file> </qresource> </RCC> ``` 将弹出子窗口的.ui 文件放在工程目录下。 接下来,在程序的.pro 文件中手动加入以下两行代码: ``` CONFIG += uitools RESOURCES += calculatorbuilder.qrc ``` 我们对下面的重点代码进行讲解。 ``` QUiLoader loader; QFile file(":/forms/calculatorform.ui"); file.open(QFile::ReadOnly); QWidget *formWidget = loader.load(&file, this); file.close(); ``` 第 1 行新建一个 QUiLoader 实例。 第 2 行指定所需.ui 文件的路径,新建一个 QFile 实例。 第 3 行以只读方式打开此文件。 第 4 行调用 QUiLoader 对象的 load()函数将.ui 文件装载到一个 QWidget 对象中,并将 此 QWidget 对象返回。 第 5 行关闭文件。 大家应该看出来了,采用动态加载.ui 文件的方式的最大好处是我们随时可以调整用户 界面的布局和显示,而不用重新编译应用程序。