计算器表单/多继承

在应用程序中使用由 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"

如前所述,该类是 QWidgetUi::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 的一个方法。

CalculatorForm::CalculatorForm(QWidget *parent)
    : QWidget(parent)
{
    setupUi(this);
}

我们包含两个槽,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() 函数实例化了 QApplicationCalculatorForm。通过调用 show() 函数显示 calculator 对象。

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    CalculatorForm calculator;
    calculator.show();
    return app.exec();
}

有各种方法可以将表单包含到应用程序中。多继承方法只是其中之一。有关其他可用方法的信息,请参阅 在您的应用程序中使用 Designer UI 文件

示例项目 @ code.qt.io

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献归各自所有者所有权。提供的文档是根据由自由软件基金会发布的GNU自由文档许可证版本1.3条款许可的。Qt及其标志是芬兰及其它世界各地The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。