QT5学习第二篇--采用代码实现计算圆的面积

代码环境

VS2022 + qtcreator

建工程

在上一篇的基础上新增加一个类如下:

步骤1

 基类还是QDialog

步骤2

 预期界面

界面

 代码

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();
}

运行结果

运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值