深圳创业补贴申请流程/seo网页优化服务
完整代码见GitHub:点击进入
在该项目中,使用了三个文件,分别是CalculatorDialog.h, CalculatorDialog.cpp, main.cpp
- CalculatorDialog.h:在该头文件里定义了一些成员变量和槽函数,用于实现计算器基本功能。
- CalculatorDialog.cpp:
CalculatorDialog
类的构造函数,用于初始化计算器对话框界面和控件。- main.cpp:Qt应用程序的入口。
CalculatorDialog.h
1. 在这个文件中首先使用了
#ifndef
和#define,用于防止头文件被重复包含,
如果头文件已经被包含,则__CALCULATORDIALOG_H
宏将已经被定义,#ifndef
指令将会跳过后续的代码。#ifndef __CALCULATORDIALOG_H #define __CALCULATORDIALOG_H#endif // __CALCULATORDIALOG_H
2. 加入了一些#include头文件,这些头文件包含Qt框架提供的头文件,例如本程序中的#include。
#include <QDialog> #include <QLabel> #include <QPushButton> #include <QLineEdit> // 行编辑控件 #include <QHBoxLayout> // 水平布局器 #include <QDoubleValidator> // 验证器
- #include <QDialog>:Qt中的对话框类,用于创建一个窗口化的用户界面。
- #include <QLabel>:Qt中的标签类,用于显示文本或图像等静态信息。
- #include <QPushButton>:Qt中的按钮类,用于触发动作或操作。
- #include <QLineEdit>:Qt中的行编辑类,用于行输入和编辑文本。
- #include <QHBoxLayout>:Qt中的水平布局器类,用于自动将控件按照水平方向排列。
- #include <QDoubleValidator>:Qt中的验证器类,用于验证输入数据是否为合法数据。
3. 定义了一个CalculatorDialog类,并且继承于QDialog,这个类可以理解为计算器对话框。
class CalculatorDialog:public QDialog {};
4. 定义了一个构造函数
- CalculatorDialog(void):用于初始化界面和控件。
5. 定义了两个槽函数:
- void enableButton(void):用于检查左右操作数是否有输入,有输入就启用等于按钮。
- void calcClicked(void):用于计算左右操作数的和并将结果在输出框中显示
public:CalculatorDialog(void); public slots:// 使能等号按钮的槽操作数void enableButton(void);// 计算结果和显示的槽函数void calcClicked(void);
6. 定义了五个指针:
QLineEdit* m_editX
:指向左操作数的指针QLineEdit* m_editY
:指向右操作数的指针QLineEdit* m_editZ
:指向结果输出框的指针- QLabel* m_label:指向“+”标签的指针
- QPushButton* m_button:指向“=”按钮的指针
private:QLineEdit* m_editX; // 左操作数QLineEdit* m_editY; // 右操作数QLineEdit* m_editZ; // 显示结果QLabel* m_label; // "+"QPushButton* m_button; // "="
7. 定义了一个
Q_OBJECT
宏,用于QT元对象编译器(moc)自动生成代码,以支持Qt的信号和槽机制。(是QT信号和槽的必要条件)Q_OBJECT // moc
完整代码见GitHub。
CalculatorDialog.cpp
1. 在该文件中
CalculatorDialog
类中的构造函数和两个槽函数enableButton()
和calcClicked(),并且
定义了头文件#include "CalculatorDialog.h"。#include "CalculatorDialog.h"// 构造函数 CalculatorDialog::CalculatorDialog(void) {}// 使能等号按钮的槽操作数 void CalculatorDialog::enableButton(void) {}// 计算结果和显示的槽函数 void CalculatorDialog::calcClicked(void) {}
实现构造函数CalculatorDialog::CalculatorDialog(void)。
2. 设置窗口标题(这个可有可无咯。
setWindowTitle("加法计算器"); // 设置窗口标题
3. 对左操作数分别进行创建对象,文本右对齐和验证数据是否合法操作,右操作数同样如此。
// 左操作数, this即为当前父窗口指针m_editX = new QLineEdit(this);// 设置文本对齐:右对齐m_editX->setAlignment(Qt::AlignRight);// 设置数字验证器 m_editX->setValidator(new QDoubleValidator(this));// 右操作数m_editY = new QLineEdit(this);m_editY->setAlignment(Qt::AlignRight);m_editY->setValidator(new QDoubleValidator(this));
4. 对结果操作数则分别进行创建对象,文本右对齐和显示结果操作。
// 显示结果m_editZ = new QLineEdit(this);m_editZ->setAlignment(Qt::AlignRight);m_editZ->setReadOnly(true);
5. 分别创建“+”和“=”对象,并且将“=”按钮设置为禁用(在没有输入数据之前,设置为禁用)。
// "+"m_label = new QLabel("+", this);// "="m_button = new QPushButton("=", this);m_button->setEnabled(false);
6. 创建布局器,并让这些对象自动调整位置和大小。
// 创建布局器:自动调整每个控件大小位置QHBoxLayout* layout = new QHBoxLayout(this);// 按水平方向,依次将控件添加到布局器中layout->addWidget(m_editX);layout->addWidget(m_label);layout->addWidget(m_editY);layout->addWidget(m_button);layout->addWidget(m_editZ);// 设置布局器setLayout(layout);
7. 信号和槽连接,使得左右操作数文本改变时发送信号textChanged(),点击按钮,发送信号clicked()。
// 信号和槽函数连接// 左右操作数文本改变时,发送信号textChanged()connect(m_editX, SIGNAL(textChanged(QString)),this, SLOT(enableButton(void)));connect(m_editY, SIGNAL(textChanged(QString)),this, SLOT(enableButton(void)));// 点击按钮,发送信号clickedconnect(m_button, SIGNAL(clicked(void)), this, SLOT(calcClicked(void)));
实现槽函数void CalculatorDialog::enableButton(void),两个左右操作数改变时,发送信号textChanged给该函数。
8. 定义两个bool类型,用来判断左右两个操作数文本是否改变,若改变,使等号按钮开启。
bool bXok, bYok;// text():获取输入文本(QString)// toDouble():QString转换为double, 参数保存转为是否成功结果m_editX->text().toDouble(&bXok);m_editX->text().toDouble(&bYok);// 当左右操作数都输入了有效数据,则使能等号按钮,否则设置禁用m_button->setEnabled(bXok && bYok);
实现槽函数void CalculatorDialog::calcClicked(void),按钮点击时,发送信号clicked()给该函数。
9. 计算结果并显示数据。
double res = m_editX->text().toDouble() + m_editY->text().toDouble();// number():将double转换为QStringQString str = QString::number(res);// 显示字符串形式结果m_editZ->setText(str);
完整代码见GitHub。
main.cpp
该文件是程序的入口
1. 定义了头文件#include <QApplication>,是一个Qt库中的核心类,它封装了整个应用程序的控制对象,在Qt应用程序中,通常需要创建一个
QApplication
对象,作为程序的主要控制对象,然后在这个对象上执行各种操作,所以需要定义这个头文件。还有CalculatorDialog
类的头文件不用多说。#include <QApplication> #include "CalculatorDialog.h"
2. int main主函数,并且创建一个
QApplication
对象作为整个程序的控制对象,最后return app.exec()
:启动Qt库的事件循环,并等待用户输入和系统事件的发生。int main(int argc, char** argv) {QApplication app(argc, argv);return app.exec();}
3. 创建一个
CalculatorDialog
对象,即计算器对话框窗口,并将计算器对话框窗口显示出来。CalculatorDialog calc;calc.show();
完整代码见GitHub。
开始编译qt程序:
- qmake -project:生成Qt项目文件
- 就需要在项目文件(.pro文件)中添加
QT += widgets
这一行。 - qmake
- make
成功得到计算器的程序了。
本次实验结束,欢迎在评论区反馈结果!!!