QT基础实践之简易计算器

文章目录

  • 简易计算器
    • 源码分享
    • 演示图
    • 第一步 界面设计
    • 第二步 设置槽
    • 第三步 计算功能实现

简易计算器

源码分享

链接:https://pan.baidu.com/s/1Jn5fJLYOZUq77eNJ916Kig
提取码:qwer

演示图

演示图

第一步 界面设计

这里直接用了ui界面,如果想要自己写界面当然也是可以的
ui设计
界面设计对于字体大小和背景颜色等可以自己进行调整,对着按钮右键选择修改样式表进行修改
修改样式
同时将QLineEdit设置为只读,因为他的作用只是为了显示,不可以进行输入,同时可以设置为显示右对齐,比较符合计算器的模式
设置只读

第二步 设置槽

这步可以直接在ui界面对按钮右键跳转到槽,同时也可以自己去写
下面是用按钮1举例
widget.hprivate slots: 进行声明

void on_btn1_clicked();

widget.cpp里设置好点击的槽函数即可

void Widget::on_btn1_clicked()
{
}

每个按钮都要设置槽

第三步 计算功能实现

首先要有个简单的计算思路,这里我的思路是,用三个字符串进行 第一个数字 第二个数字 以及符号的记录,同时一个double型进行计算操作,flag来判断到哪个数字的输出的状态
widget.h中设置

 	QLineEdit ant;//显示框
    QString a;//记录第一个数字
    QString b;//记录第二个数字
    QString F;//记录符号
    double sum = 0;//计算
    int flag = 0;//状态判断

widget.cpp里的槽中进行实现

点击1后的操作
其他数字以此类推

void Widget::on_btn1_clicked()
{
    if(flag == 0)
    {
        a += '1';
        ui->ant->setText(a);
    }
    if(flag == 1)
    {
        b += '1';
        ui->ant->setText(b);
    }
}

点击+后的操作
其他符号以此类推,这里先判断是否状态为第二个数字的输出状态,同时是为了在没点击=的时候,进行连续计算的关键 同时在后面设置状态为 1,并储存符号到F字符串中去,并显示;(if判断完就一句话没打{}看起来有点乱,自己可以加上)

void Widget::on_sub_clicked()
{
    if(flag == 1)
    {
        if(F =='+')
        sum = a.toDouble() + b.toDouble();
        else if(F == '-')
        sum = a.toDouble() - b.toDouble();
        else if(F =='*')
        sum = a.toDouble() * b.toDouble();
        else if(F == '/')
        sum = a.toDouble() / b.toDouble();
        F = '-';
        a = QString::number(sum);
        ui->ant->setText(a);
        b.clear();
    }
    flag = 1;
    F = '-';
    ui->ant->setText(F);
}

点击=的操作
判断状态为1开始计算,首先将a和b字符串转为浮点型并根据F的符号进行计算,用浮点型是为了除法的正确性,为了确保连续计算,再次将sum变为字符串放入a里,然后显示答案在ant显示栏,将状态回调到0,清空b串

void Widget::on_eq_clicked()
{
    if(flag == 1)
    {
        if(F=='+')
        {
            sum = a.toDouble() + b.toDouble();
            a = QString::number(sum);
            ui->ant->setText(a);
            flag = 0;
            b.clear();
        }
        else if(F=='-')
        {
            sum = a.toDouble() - b.toDouble();
            a = QString::number(sum);
            ui->ant->setText(a);
            flag = 0;
            b.clear();
        }
        else if(F=='*')
        {
            sum = a.toDouble() * b.toDouble();
            a = QString::number(sum);
            ui->ant->setText(a);
            flag = 0;
            b.clear();
        }
        else if(F=='/')
        {
            sum = a.toDouble() / b.toDouble();
            a = QString::number(sum);
            ui->ant->setText(a);
            flag = 0;
            b.clear();
        }
    }
}

点击C的操作
进行清空
比较好理解不多说了

void Widget::on_de_clicked()
{
    a.clear();
    b.clear();
    F.clear();
    flag = 0;
    ui->ant->setText("请输入");
}

这是QT的第一次实践,比较顺利,对于计算的实现有更多方法,可以继续思考,并开发计算器的更多功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/194240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ITIL4中自动化测试和质量保障的重要性

点击进入IT管理资料库 在迅速变革的科技世界中,IT服务管理的关键要素之一是自动化测试和质量保障。随着ITIL 4的崭新框架崛起,这两者不仅成为服务管理的重要组成部分,更是组织提高服务质量和效率的不可或缺的利器。 自动化测试和质量保障如何…

MySQL备份与恢复(重点)

MySQL备份与恢复(重点) 一、用户管理与权限管理 ☆ 用户管理 1、创建MySQL用户 注意:MySQL中不能单纯通过用户名来说明用户,必须要加上主机。如jack10.1.1.1 基本语法: mysql> create user 用户名被允许连接的主…

DM8数据库版本升级

DM数据库版本升级说明 DM数据库的版本一直在不断的的迭代。 对于DM 的数据库版本,分大版本和小版本。 1)大版本:指DM6,DM7,DM8 这种。2)小版本:指同一个大版本子版本的变化,比如DM8的:8.1.0.1…

Android修行手册 - 使用ViewPager2实现画廊效果

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

什么是Cyclomatic Complexity循环复杂度

Cyclomatic Complexity,可以翻译成 循环复杂度圈复杂度圈复杂性回路复杂性 循环复杂度是软件工程中的一个定量度量,表示程序或函数的复杂性。它衡量程序源代码中线性独立路径或分支的数量。如果一个函数的循环复杂度太高了,就需要进行重构。…

sqli-labs靶场详解less-24(二次注入)

less-24 对于一个像我一样的小白来说这关就像php代码审计 一开始进行判断注入点的时候怎么都找不到一点思路都没有 只能搜教程 说是二次注入 从来没遇见的题型 于是从代码审计开始 先说一下什么叫二次注入 二次注入 二次注入是指通过SQL语句存储到数据库的用户输入被读取后再次…

STM32_9(USART串口)

一、串口通信 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围&#xff0…

西南科技大学(数据结构A)期末自测练习一

一、填空题(每空0.5分,共5分) 1、数据结构是指( A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 2、数据结构被形式地定义为(D,R),其中D是( B )的有限集合,R是D上( D )的有限集合。 (1)A.算法B.数据元素C.数据操作D.逻辑结构 (2)A.操作B.…

滴滴昨晚崩了,看这波还敢不敢降本增效?

起因 截至 2023 年 11 月 27 日晚,中国最大的网约车服务平台滴滴打车遭遇系统崩溃,继阿里云控制台故障之后,再次引发热议。这一事件迅速攀升至热搜榜首,引起广泛关注。 今晚约 10 点,滴滴打车遭遇大范围技术故障。用户…

小程序----使用图表显示数据--canvas

需求:在小程序上实现数据可视化 思路:本来想用的是echarts或者相关的可视化插件,但因为用的是vue3,大多数插件不支持,所以用了echarts,但最后打包的时候说包太大超过2M无法上传,百度了一下&…

[Linux] 正则表达式及grep和awk

一、正则表达式 1.1 什么是正则表达式 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 正则表达式和通配符的区别 正则…

继承JsonSerializer+注解实现自定义数据脱敏方案

1、数据脱敏 数据脱敏是一种保护隐私数据的技术,通过将敏感信息转化为非敏感信息来实现对数据的保护,以保护敏感隐私数据的可靠性和安全性。 数据脱敏可以分为可恢复和不可恢复两类: 可恢复类可以通过一定的方式恢复成原来的敏感数据。不可恢复类则无…

计算机基础知识59

MySQL的卸载流程 1、先停止MySQL服务:右键“此电脑”,选择“管理”,之后选择“服务和应用程序”--“服务”,在服务中找到“MySQL”,右键选择“停止”。 2、找到“控制面板”--“程序和功能”,找到MySQL&…

C++二分查找视频教程:两数之和

作者推荐 利用广度优先或模拟解决米诺骨牌 本文涉及的基础知识点 二分查找算法合集 题目 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 n…

Find My键盘|苹果Find My技术与键盘结合,智能防丢,全球定位

键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母、汉字、数字、标点符号等输入到计算机中,从而向计算机发出命令、输入数据等。还有一些带有各种快捷键的键盘。随着时间的推移,渐渐的市场上也出现独立的具有各种快捷功能的产品单独…

STK Components 二次开发- StarLink

1.星链数据下载 CelesTrak: Current GP Element Sets 下载二根数就可以。 2.处理数据 下载下来的数据是这样,要将字符串转为 二根数对象 TwoLineElementSet tle new TwoLineElementSet(tleString); Sgp4Propagator propagator new Sgp4Propagator(tle); 3.批量…

linux task_struct中进程调度相关的变量记录

参考文章: Linux进程调度分析记录,进程优先级,隔离处理器,isolcpus - 知乎

js的数组去重方法

目录 es6数组中对象去重 1. filter()用法 2. findIndex()用法 3. 去重 其他方法: 方法二:reduce()去重 1. reduce()用法 1.1 找出字符长度最长的数组成员。 1.2 扁平化二维数组 1.3 扁平化多维数组 三、总结方案: 使用Set&#xf…

AT89S52单片机------中断系统

目录 单片机的内部结构 中断请求标志寄存器 (1)TCON寄存器 (2)SCON寄存器 (3)定时器2的控制寄存器T2CON 中断允许与中断优先级的控制寄存器 中断允许寄存器IE 中断优先级寄存器IP 响应中断请求的条件 外部中断响应时间 外部中断的触发方式选择 中断请求的撤销 1.定…

[极客大挑战2023] Crypto/PWN/Reverse

这个网站真辛苦,每次都要回到all,屏幕随时卡。界面有待进步老远。也不提示结束,结果现在才听说结束了,才开始记录一下。 还跟往常一样,WM不作,其它也AK不了,总是差点。 Crypto SignIn 53594…