计算器表单/多继承
在应用程序中使用由 Qt Designer 创建的表单。
多继承示例展示了如何在应用程序中使用由 Qt Designer 创建的表单,方法是通过派生 QWidget 和用户界面类(即 Ui::CalculatorForm
),并对两者进行子类化。
要分散 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 定义
在 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 的自动连接功能自动连接所有涉及的信号和槽。
CalculatorForm 实现
在构造函数中,我们通过调用 setupUi()
来加载用户界面文件。请注意,setupUi 是 Ui::CalculatorForm
的一个方法。
我们包含两个槽,on_inputSpinBox1_valueChanged()
和 on_inputSpinBox2_valueChanged()
。这些槽响应两个旋钮都发射的 valueChanged() 信号。每当其中一个旋钮的值发生变化时,我们都取该值并将其添加到另一个旋钮所拥有的值上。
void CalculatorForm::on_inputSpinBox1_valueChanged(int value) { outputWidget->setText(QString::number(value + inputSpinBox2->value())); } void CalculatorForm::on_inputSpinBox2_valueChanged(int value) { outputWidget->setText(QString::number(value + inputSpinBox1->value())); }
main()
函数
main()
函数实例化了 QApplication 和 CalculatorForm
。通过调用 show() 函数显示 calculator
对象。
int main(int argc, char *argv[]) { QApplication app(argc, argv); CalculatorForm calculator; calculator.show(); return app.exec(); }
有各种方法可以将表单包含到应用程序中。多继承方法只是其中之一。有关其他可用方法的信息,请参阅 在您的应用程序中使用 Designer UI 文件。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献归各自所有者所有权。提供的文档是根据由自由软件基金会发布的GNU自由文档许可证版本1.3条款许可的。Qt及其标志是芬兰及其它世界各地The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。