计算器表单

在应用程序中使用Qt Widgets Designer 创建的表单。

计算器表单示例展示了如何通过使用QWidget 子类中的用户界面信息,在应用程序中使用通过Qt Widgets Designer 创建的表单。

计算器表格示例截图

该示例显示了两个用于输入整数值的旋转框和一个显示其总和的标签。每当任何一个旋转框更新时,部件与表单之间的信号槽连接都会确保标签也随之更新。

准备工作

本例的用户界面完全通过Qt Widgets Designer 设计。设计结果是一个 UI 文件,其中描述了表单、使用的部件、部件之间的信号槽连接以及其他标准用户界面属性。

为确保示例可以使用该文件,我们启用了CMAKE_AUTOUIC 功能,并在源文件中列出了 UI 文件:

set(CMAKE_AUTOUIC ON)

qt_add_executable(calculatorform
    calculatorform.cpp calculatorform.h calculatorform.ui
    main.cpp
)

对于qmake ,我们需要在示例的项目文件中包含FORMS 声明:

FORMS       = calculatorform.ui

构建项目时,uic 将创建一个头文件,让我们构建表单。

CalculatorForm 类定义

CalculatorForm 类使用calculatorform.ui 文件中描述的用户界面。要访问表单及其内容,我们需要在构建过程中包含uic 创建的ui_calculatorform.h 头文件:

#include "ui_calculatorform.h"

我们通过子类化QWidget 来定义CalculatorForm 类,因为表单本身是基于QWidget 的:

class CalculatorForm : public QWidget
{
    Q_OBJECT

public:
    explicit CalculatorForm(QWidget *parent = nullptr);

private slots:
    void updateResult();

private:
    Ui::CalculatorForm ui;
};

除构造函数外,该类还包含一个私有槽updateResult() ,用于执行计算并相应更新输出部件。私有ui 成员变量指向表单,用于访问用户界面的内容。

CalculatorForm 类的实现

构造函数简单地调用基类的构造函数,设置表单的用户界面,并将信号QSpinBox::valueChanged() 连接到槽updateResult()

CalculatorForm::CalculatorForm(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    connect(ui.inputSpinBox1, &QSpinBox::valueChanged, this, &CalculatorForm::updateResult);
    connect(ui.inputSpinBox2, &QSpinBox::valueChanged, this, &CalculatorForm::updateResult);
}

用户界面是通过setupUI() 函数设置的。我们通过this 作为该函数的参数,将CalculatorForm 部件本身作为用户界面的容器。

插槽updateResult() 将数值相加,并将结果设置在输出部件上:

void CalculatorForm::updateResult()
{
    const int sum = ui.inputSpinBox1->value() + ui.inputSpinBox2->value();
    ui.outputWidget->setText(QString::number(sum));
}

每当一个旋转框的值发生变化时,它就会被调用。

示例项目 @ code.qt.io

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.