1.需要做出来的应用软件
2.main.cpp
2.1 setWindowTitle()函数
修改应用程序的窗口标题名称
//修改应用程序的窗口标题名称
w.setWindowTitle("计算圆球的体积");
2.2完整main函数
#include "dialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
//修改应用程序的窗口标题名称
w.setWindowTitle("计算圆球的体积");
w.show();
return a.exec();
}
3.dialog.h
3.1引入标签,按钮,输入框
#include <qlabel.h>//标签控件
#include <qpushbutton.h>//按钮控件
#include <qlineedit.h>//文本输入框
3.1.1QLabel(标签控件)
主要用途:用于显示,不可编辑
特点:
只读,用户不能直接编辑
可以显示纯文本、富文本、图片
可以设置对齐方式、字体、颜色等
3.1.2QPushButton(按钮控件)
主要用途:用于触发动作,可点击
特点:
可点击,有按下、释放等状态
可以显示文本、图标
可以设置快捷键
可以连接信号和槽
3.1.3QLineEdit(单行文本输入框)
主要用途:用于输入,可编辑
特点:
可编辑,用户可以直接输入文本
可以设置输入限制(如只允许数字)
可以设置占位符文本
可以设置密码模式
3.2定义标签,按钮,输入框
private:
QLabel *lab1,*lab2;// 显示圆球的半径和体积
QLineEdit *lEdit;// 编辑按钮
QPushButton *pbt;// 按钮控件
3.3定义槽函数计算圆球的体积
private slots:
void CalcBallVolume();// 槽函数计算圆球的体积
3.4完整dialog.h代码
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlineedit.h>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private:
QLabel *lab1,*lab2;// 显示圆球的半径和体积
QLineEdit *lEdit;// 编辑按钮
QPushButton *pbt;// 命令按钮
private slots:
void CalcBallVolume();// 槽函数计算圆球的体积
};
#endif // DIALOG_H
4.dialog.cpp
4.1实现槽函数框架
void Dialog::CalcBallVolume(){
}
4.2创建lab1标签(提示用户输入圆球的半径)
lab1 = new QLabel(this);
lab1->setText(tr("请输入圆球的半径:"));
4.3创建其他标签,按钮和输入框
// 创建lab2标签
lab2 = new QLabel(this);
// 创建lEdit编辑框
lEdit = new QLineEdit(this);
// 创建pbt按钮
pbt = new QPushButton(this);
pbt->setText(tr("计算圆球体积"));
4.4利用表格布局,处理重叠
4.4.1引用头文件
//专门用于表格布局
#include <QGridLayout>
4.4.2表格布局
QGridLayout *mLay = new QGridLayout(this);
// 标签lab1第一行第一列
// 编辑框lEdit第一行第二列
// 标签lab2第二行第一列
// 按钮pbt第二行第二列
mLay->addWidget(lab1,0,0);
mLay->addWidget(lEdit,0,1);
mLay->addWidget(lab2,1,0);
mLay->addWidget(pbt,1,1);
4.5实现槽函数计算圆球的体积
-
isLoop是一个布尔变量,用于判断字符串转整数时是否成功。 -
tempStr是一个临时字符串变量,用于存放体积的字符串表示。 -
valueStr是获取界面上 lEdit(一个 QLineEdit 输入框)里的文本内容。 -
valueInt是把输入框里的文本 valueStr 转换为整数 valueInt,如果转换成功,isLoop 会被设为 true。 -
dvSum是用球体体积公式计算体积,valueInt 作为半径 r,PI 应该是圆周率常量。 -
最后把计算出来的体积 dvSum 转成字符串,显示到界面上的 lab2(一个 QLabel 标签)上。
const static double PI = 3.1415;
void Dialog::CalcBallVolume() //槽函数计算圆球的体积
{
bool isLoop;
QString tempStr;
QString valueStr = lEdit->text();
int valueInt = valueStr.toInt(&isLoop);
double dvSum = 4.0 / 3.0 * PI * valueInt * valueInt * valueInt;
lab2->setText(tempStr.setNum(dvSum));
}
4.6连接信号与槽
-
lEdit这是一个输入框(QLineEdit),你在界面上输入内容的地方。 -
SIGNAL(textChanged(QString))这是一个信号,意思是“当输入框里的内容发生变化时”。 -
this指当前的窗口或对话框对象。 -
SLOT(CalcBallVolume())这是一个槽函数,意思是“执行CalcBallVolume这个函数”。
connect(lEdit,SIGNAL(textChanged(QString)),this,SLOT(CalcBallVolume()));
4.7完整dialog.cpp代码
#include "dialog.h"
#include <QGridLayout> // QGridLayout(表格布局)
const static double PI = 3.1415;
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
/*
QLabel *lab1,*lab2;// 显示圆球的半径和体积
QLineEdit *lEdit;// 编辑按钮
QPushButton *pbt;// 命令按钮
*/
// 创建第一个标签(提示用户)
lab1 = new QLabel(this);
lab1->setText(tr("请输入圆球的半径:"));
// 创建第二个标签(计算圆球体积的结果)
lab2 = new QLabel(this);
// 创建一个编辑框控件(专门用于接收用户的输入圆球半径的值)
lEdit = new QLineEdit(this);
// 创建命令按钮
pbt = new QPushButton(this);
pbt->setText(tr("计算圆球体积"));
QGridLayout *mLay = new QGridLayout(this);
mLay->addWidget(lab1,0,0);
mLay->addWidget(lEdit,0,1);
mLay->addWidget(lab2,1,0);
mLay->addWidget(pbt,1,1);
connect(lEdit,SIGNAL(textChanged(QString)),this,SLOT(CalcBallVolume()));
}
Dialog::~Dialog()
{
}
void Dialog::CalcBallVolume() //槽函数计算圆球的体积
{
bool isLoop;
QString tempStr;
QString valueStr = lEdit->text();
int valueInt = valueStr.toInt(&isLoop);
double dvSum = 4.0 / 3.0 * PI * valueInt * valueInt * valueInt;
lab2->setText(tempStr.setNum(dvSum));
}