Qt 计算圆的面积 的两种方式

第一种 设计界面实现

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:


    void on_pushButton_clicked();


    void on_radiusLineEdit_textChanged(const QString &arg1);

private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H

dialog.cpp

const static double PI=3.1416;  // 声明全局变量PI
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}


void Dialog::on_pushButton_clicked()
{
    bool ok;
    QString tempStr;
    QString valueStr=ui->radiusLineEdit->text();
    int valueInt=valueStr.toInt(&ok);
    double area=valueInt*valueInt*PI;  // 计算圆面积
    ui->areaLabel_2->setText(tempStr.setNum(area));
}

void Dialog::on_radiusLineEdit_textChanged(const QString &arg1)
{
    // 当输入框值改变时,就算出其相应的圆的面积
//    bool ok;
//    QString tempStr;
//    QString valueStr=ui->radiusLineEdit->text();
//    int valueInt=valueStr.toInt(&ok);

//    double area=valueInt*valueInt*PI;  // 计算圆面积
//    ui->areaLabel_2->setText(tempStr.setNum(area));
}

第二种 代码设计实现

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 引入头文件
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

class Dialog : public QDialog
{
    Q_OBJECT  // 作用:启动Qt元对象系统的一些特性

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

    // 声明私有组件
private:
    QLabel *label1,*label2;
    QLineEdit *lineEdit;
    QPushButton *button;
    // 声明槽 slots
private slots:
    void showArea();
};
#endif // DIALOG_H

dialog.cpp

// 全局变量
const static double PI=3.1416;

#include "dialog.h"
// 引入头文件
#include <QGridLayout>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    // 界面设计
    label1=new QLabel(this);
    label1->setText(tr("请输入圆的半径:"));
    lineEdit=new QLineEdit(this);
    label2=new QLabel(this);
    button=new QPushButton(this);
    button->setText(tr("显示对应圆的面积"));
    // 用于布局管理器,将所有控件的位置固定
    QGridLayout *mainLayout=new QGridLayout(this);
    mainLayout->addWidget(label1,0,0);
    mainLayout->addWidget(lineEdit,0,1);
    mainLayout->addWidget(label2,1,0);
    mainLayout->addWidget(button,1,1);

    //  松散耦合 信号发送端 和 接受端 本身是没有关联的,
    // 通过connect连接 将两端 耦合在一起。
    // 点击按钮计算 圆的面积
    connect(button,SIGNAL(clicked()),this,SLOT(showArea()));
    // 文本框的值变动时计算 圆的面积
    //connect(lineEdit,SIGNAL(textChanged(QString)),this,SLOT(showArea()));
}


Dialog::~Dialog()
{
}

// 实现主要功能
void Dialog::showArea()
{
    bool ok;
    QString tempStr;
    QString valueStr=lineEdit->text();
    int valueInt=valueStr.toInt(&ok);
    double area=valueInt*valueInt*PI;  // 计算圆的面积
    label2->setText(tempStr.setNum(area));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值