Qt设计器表单在运行时处理,以生成动态生成的用户界面。为了在运行时生成表单,需要一个包含UI文件的资源文件。使用表单处理类的应用程序需要配置为针对QtUI工具模块构建。这是通过在qmake项目文件中包含以下声明来完成的,以确保应用程序被适当地编译和链接。
QT += uitools
由Quiloader类提供的表单加载器对象用于构造用户界面。此用户界面可以从任何qiodevice中检索。例如,可以使用qfile对象获取存储在项目资源中的表单。函数的作用是: QUiLoader::load()获取文件中包含的用户界面描述,并构造表单小部件。
要包含模块类的定义,请使用以下指令:
#include <QtUiTools>
QtUI工具模块提供用于处理用QtDesigner创建的UI表单的类。在运行时处理表单以动态生成用户界面。
2.配套例程
(1)多重继承示例——在应用程序中使用使用qt designer创建的表单。
多重继承示例演示了如何通过将QWidget和用户界面类(即ui::calculatorForm)子类化,在应用程序中使用Qt设计器创建的表单。
为了子类化calculatorForm.ui文件并确保qmake使用uic处理它,我们必须在.pro文件中包含calculatorForm.ui,如下所示:
QT += widgets
HEADERS = calculatorform.h
SOURCES = calculatorform.cpp main.cpp
FORMS = calculatorform.ui
编译项目时,uic将生成相应的ui_calculatorform.h。
在CalculatorForm定义中,我们包含了先前生成的ui_CalculatorForm.h。
#include "ui_calculatorform.h"
如前所述,类是qwidget和ui::calculatorForm的子类。
class CalculatorForm : public QWidget, private Ui::CalculatorForm
{
Q_OBJECT
public:
explicit CalculatorForm(QWidget *parent = nullptr);
private slots:
void on_inputSpinBox1_valueChanged(int value);
void on_inputSpinBox2_valueChanged(int value);
};
根据UIC要求的自动连接命名约定定义两个插槽。这是为了确保qmetaObject的自动连接设施自动连接所有涉及的信号和插槽。在构造函数中,我们调用setupui()来加载用户界面文件。请注意,SETUPUI是ui::calculatorForm的一种方法。
CalculatorForm::CalculatorForm(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
}
(2)文本查找器示例——Dynamically loading .ui files using QUiLoader.