当前位置: 首页 > news >正文

QT上位机开发(乘法计算小软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面一篇文章,我们学习了怎么创建qt的第一个工程,怎么用designer给qt修改界面。虽然我们到目前为止,还没有编写一行代码,但是好像也做出了第一个qt软件,即使这个软件好像没有什么实际用途。不过没关系,我们今天可以进一步学习下怎么编写按钮的回调函数,这样就可以让软件变得稍微有意义一点。

        为了做到这一点,我们开发了一个乘法计算的小软件。简单的来说,软件有两个输入,一个是数据1,一个是数据2。通过一个calculate的按钮,我们就可以得到数据1和数据2的乘积。另外,我们还增加了一个clean按钮,它可以对输入框进行清空的操作。

1、利用designer设计qt界面

        如果对界面美观不做要求,简单拖拉一下控件就可以实现这个目标。这部分内容之前一节已经讲解过,不再赘述。

        拖拉后控件的名字,也可以通过ui文件看出来。ui文件就是普通的文本文件,可以通过记事本或者notepad++这样的软件打开,就能找到里面的内容。相关名称在编写cpp代码的时候,需要用到。

2、在QtWidgetsApplication1.h中添加函数声明

        因为我们需要对两个按钮进行回调处理,所以这边也需要在头文件的类当中,添加两个回调函数。回调函数和其他普通函数稍微有点区别,那就是添加一个额外的关键字slots,这也算是qt的一个特色吧。

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"class QtWidgetsApplication1 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication1(QWidget *parent = nullptr);~QtWidgetsApplication1();private:Ui::QtWidgetsApplication1Class ui;private slots:void on_calculate_clicked();void on_clean_clicked();
};

3、在QtWidgetsApplication1.cpp实现回调函数

        既然头文件当中已经声明了回调函数,那么接下来就需要把控件和回调函数进行绑定。这样在按钮被按下去的时候,才能触发对应的回调函数。目前这个bind的过程是利用connect函数完成的。另外,对于ui里面的控件,直接用ui.name的方法就可以直接找到对应的控件变量。

#include <QApplication>
#include <QPushButton>
#include <QMessageBox>
#include "QtWidgetsApplication1.h"QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);connect(ui.pushButton, &QPushButton::clicked, this, &QtWidgetsApplication1::on_calculate_clicked);connect(ui.pushButton_2, &QPushButton::clicked, this, &QtWidgetsApplication1::on_clean_clicked);
}QtWidgetsApplication1::~QtWidgetsApplication1()
{}

        注册好了,接下来就可以一个一个实现对应的函数了。calculate是计算功能的按钮。按钮被按下去的时候,首先会检查text1是否为空,接着检查text2是否为空,如果都ok,就直接用QMessageBox弹出对应的计算结果。

void QtWidgetsApplication1::on_calculate_clicked() {QString text1;QString text2;text1 = ui.lineEdit->text();if (text1 == ""){QMessageBox::information(this, "tip", "Please input data1!");return;}text2 = ui.lineEdit_2->text();if (text2 == ""){QMessageBox::information(this, "tip", "Please input data2!");return;}int data1 = text1.toInt();int data2 = text2.toInt();data2 *= data1;QMessageBox::information(this, "tip", QString("Final result is ") + QString::number(data2) + QString("!"));
}

        结束了calculate按钮的回调,下面就是clean按钮的回调。它的功能就简单得多,主要就是把text1和text2中的内容清空就可以了。

void QtWidgetsApplication1::on_clean_clicked() {ui.lineEdit->setText("");ui.lineEdit_2->setText("");
}

4、测试和验证

        和之前一个工程相比较,这里除了ui和QtWidgetsApplication1文件修改之外,不需要对main.cpp做任何操作。直接编译,输入参数进行验证,

        有兴趣的同学,还可以在回调函数的地方设置断点,进一步进行分析测试,锻炼一下自己的c++调试能力。

http://www.lryc.cn/news/270166.html

相关文章:

  • 【Matlab】BP 神经网络时序预测算法
  • GPT在企业自动化方面的应用
  • STM32——通用计时器
  • 【HarmonyOS】鸿蒙开发简介与项目基础配置演示
  • [MySQL] MySQL数据库创建存储过程
  • mysql哪些情况下不走索引?
  • 蓝桥杯python比赛历届真题99道经典练习题 (13-20)
  • 初识javaWeb
  • day5--java基础编程:异常,内部类
  • 2023.12.28 关于 Redis 数据类型 List 内部编码、应用场景
  • uni-app page新建以及page外观配置
  • 问题:执行conda init 提示 No action taken,然后无法正确激活环境
  • SpringBoot 增量/瘦身部署jar 包
  • AI客服的评分机制及自动化测试
  • 【Matlab】ELM极限学习机时序预测算法
  • m3u8网络视频文件下载方法
  • 相机内参标定理论篇------张正友标定法
  • 鸿蒙 Window 环境的搭建
  • 新一代大语言模型在Amazon Bedrock引领人工智能潮流
  • kafka实现延迟消息
  • python+django高校教材共享管理系统PyCharm 项目
  • 三子棋(c语言)
  • 09.kubernetes 部署calico / flannel网络插件
  • 【DevOps 工具链】搭建 项目管理软件 禅道
  • ES6的默认参数和rest参数
  • 深入理解WPF MVVM:探索数据绑定与命令的优雅之道
  • ssrf之gopher协议的使用和配置,以及需要注意的细节
  • SVN下载安装(服务器与客户端)
  • SpringIOC之ApplicationObjectSupport
  • 香橙派 ubuntu实现打通内网,外网双网络,有线和无线双网卡