QT自学过程记录(5-2):用代码实现计算圆面积

1 目录及资源索引

  QT自学过程目录及资源索引

2 项目需求

  1. 有一个图形化的窗口界面;
  2. 有半径、面积等窗口部件;
  3. 输入半径可以自动计算面积等;

3 软件开发

3.1 创建工程

  创建过程参考5-2,在类信息那一栏取消勾选创建界面,其他部分不变,如下图
在这里插入图片描述

3.2 需求实现

  • 创建完成后的主函数,不需要修改,只需要修改我们自己创建的这个类即可。主函数内容如下:
    在这里插入图片描述
  • 接着在 mydialog.h 中定义使用到的变量及函数,在此之前还要包含用到的头文件,内容如下
#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>
#include <QLabel>          // 文本框
#include <QLineEdit>       // 输入内容
#include <QPushButton>     // 按键

class MyDialog : public QDialog
{
    Q_OBJECT

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

private:
    QLabel *label1, *label2;     // 定义两个文本框
    QLineEdit *lineEdit;         // 定义输入半径框
    QPushButton *button;         // 定义按钮

private slots:
    void showArea();             // 槽函数 计算圆的面积

};

#endif // MYDIALOG_H
  • 接着在cpp文件中完善相关函数,下边有两种实现计算半径的方法,一种是输入半径后,点击对应按键,然后计算出面积;另一种是输入半径,自动计算面积。源码文件如下:
#include "mydialog.h"
#include <QGridLayout>

const static double PI = 3.1415;

MyDialog::MyDialog(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);                // 会话框添加 文本显示控件1
    mainLayout->addWidget(lineEdit, 0, 1);              // 会话框添加 文本输入控件
    mainLayout->addWidget(label2, 1, 0);                // 会话框添加 文本显示控件2
    mainLayout->addWidget(button, 1, 1);                // 会话框添加 按钮

    // 使用槽函数 关联到按键,只要按键有触发,就执行计算面积函数
//    connect(button, SIGNAL(clicked()), this, SLOT(showArea()));

    // 使用此函数 当检测到有内容输入,就自动计算面积
    connect(lineEdit, SIGNAL(textChanged(QString)), this, SLOT(showArea()));

}

MyDialog::~MyDialog()
{

}

void MyDialog::showArea()
{
    bool ok;                                 // 定义布尔变量
    QString tempStr;                         // 定义中转字符串变量

    QString valueStr = lineEdit->text();     // 获取输入的文本内容 字符串格式

    int valueInt = valueStr.toInt(&ok);      // 将获取到的字符串格式的文本内容转换为 int 类型

    double area = valueInt * valueInt * PI;  // 利用圆的面积公式,计算面积

    label2->setText(tempStr.setNum(area));   // 将计算结果显示出来
}
  • 可以在上述代码中看到有两个 connect 函数,第一个是检测到有按键信号,然后执行计算面积函数;第二个是检测到有文本输入信号,然后计算圆面积。两种方法都可以试一下。
  • 测试结果截图如下:
    在这里插入图片描述

4 总结

  1. 编程过程基本都是参考文章开头分享的教程来做的,挺好用的;
  2. 两种实现计算面积的方式,主要是获取的信号不一样,需注意;
  3. 目前还只是参考源码,然后自己编程来做,对一些函数了解的不是很深入,后续要慢慢补上;
  4. 有兴趣的可以加我QQ,共同学习:144 - 622 - 7671;
发布了88 篇原创文章 · 获赞 84 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/Fighting_Boom/article/details/103338947
5-2