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. 有兴趣的可以私信加我好友,共同学习交流!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingBoom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值