代码环境
VS2022 + qtcreator
建工程
在上一篇的基础上新增加一个类如下:
基类还是QDialog
预期界面
代码
CircleAreaForCode.h
#pragma once
#include <qdialog.h>
#include<qlabel.h>
#include<qlineedit.h>
#include<qpushbutton.h>
# pragma execution_character_set("utf-8")//解决中文乱码问题
class CircleAreaForCode :
public QDialog
{
Q_OBJECT
public:
CircleAreaForCode(QWidget* parent = nullptr);
~CircleAreaForCode();
private:
//头文件 #include<qlabel.h>
QLabel* RadiusLabel;//创建半径标签的控件
QLabel* AreaLabel;//创建面积标签的控件
//头文件 #include<qlineedit.h>
QLineEdit* AreaLineEdit;//创建半径文本的控件
QLineEdit* RadiusLineEdit;//创建面积标签的控件
//头文件 #include<qpushbutton.h>
QPushButton* CountBtn;//创建计算按钮的控件
private slots:
void RadiusLineEditChanged(QString);//通过数值变化来计算面积
void CountBtnClicked();//通过按钮来计算面积
};
CircleAreaForCode.cpp
#include "CircleAreaForCode.h"
#include<qgridlayout.h>
static double PI = 3.14;
CircleAreaForCode::CircleAreaForCode(QWidget* parent)
: QDialog(parent)
{
//初始化变量
RadiusLabel = new QLabel(this);
AreaLabel = new QLabel(this);
RadiusLineEdit = new QLineEdit(this);
AreaLineEdit = new QLineEdit(this);
CountBtn = new QPushButton(this);
//设置控件文本
RadiusLabel->setText("半径");
AreaLabel->setText("面积");
CountBtn->setText("计算");
//头文件 #include<qgridlayout.h>
QGridLayout* gridLayout = new QGridLayout(this);//布局管理器
//添加窗口部件
gridLayout->addWidget(RadiusLabel, 0, 1);
gridLayout->addWidget(RadiusLineEdit, 0, 2);
gridLayout->addWidget(AreaLabel, 0, 3);
gridLayout->addWidget(AreaLineEdit, 0, 4);
gridLayout->addWidget(CountBtn, 1, 4);
//信号槽
connect(RadiusLineEdit, SIGNAL(textChanged(QString)), this, SLOT(RadiusLineEditChanged(QString)));
connect(CountBtn, SIGNAL(clicked()), this, SLOT(CountBtnClicked()));
}
CircleAreaForCode::~CircleAreaForCode()
{}
void CircleAreaForCode::RadiusLineEditChanged(QString)
{
QString strRadius = RadiusLineEdit->text();//获取半径字符串
double dRadius = strRadius.toDouble();//转换为数值
double dArea = PI * dRadius * dRadius;//计算面积
QString strArea = NULL;
strArea.setNum(dArea);//转换为字符串
AreaLineEdit->setText(strArea);//设置文本
}
void CircleAreaForCode::CountBtnClicked()
{
QString strRadius = RadiusLineEdit->text();//获取半径字符串
double dRadius = strRadius.toDouble();//转换为数值
double dArea = PI * dRadius * dRadius;//计算面积
QString strArea = NULL;
strArea.setNum(dArea);//转换为字符串
AreaLineEdit->setText(strArea);//设置文本
}
main.cpp
#include "CircleAreaForCode.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CircleAreaForCode w;
w.setWindowTitle("CircleAreaForCode");
w.show();
return a.exec();
}
运行结果