Qt5 趣学(1):圆面积计算

/*---------------------撸代码式-----------------------*/
/*-------------------cir_area.h----------------------*/
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 新增的
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

class Dialog : public QDialog {
    // 该宏的作用是启动 Qt元对象系统 的一些特性(如支持信号和槽等),必须置于私有区
    Q_OBJECT 

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

private:
    QLabel *label1,*label2; // 控件:“请输入圆的半径”,“显示结果”
    QLineEdit *lineEdit;    // 控件:“输入框”
    QPushButton *button;    // 控件:“按钮:显示对应圆的面积”
private slots:
    void showArea();    // 函数:计算圆的面积
};

#endif // DIALOG_H

/*--------------------cir_area.cpp---------------------*/
#include "dialog.h"
#include "ui_dialog.h"

#include <QGridLayout> // 估计....大概与控件设置有关
const static double PI = 3.1416;    // 全局变量PI

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的连接方式不一*/
    // 方法1 需要单击:button发信号连接到函数showArea上
// connect(button,SIGNAL(clicked()),this,SLOT(showArea()));
    // 方法2 无需单击:lineEdit发信号连接到函数showArea上
 connect(lineEdit,SIGNAL(textChanged(QString)),this,SLOT(showArea()));
}

// showArea()函数的实现
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));  
}

Dialog::~Dialog()
{ }

/*-------------------main.cpp----------------------*/
#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}

你可能感兴趣的:(qt5)