用c++写出带交互界面的简单计算器

您所在的位置:网站首页 带编辑功能的计算器图片 用c++写出带交互界面的简单计算器

用c++写出带交互界面的简单计算器

2024-07-16 03:16| 来源: 网络整理| 查看: 265

利用devc++和QT写交互界面的计算器 一.先下载一个QT

下载地址 http://download.qt.io/archive/qt/ 我下载的是 5.12.8 版本的 在这里插入图片描述 第四个是windos的 第五个是mac的 第六个是linux的 按需下载就行了

这里有一篇下载安装教程可以看看 https://blog.csdn.net/cfan927/article/details/98115783?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&depth_1-utm_source=distribute.pc_releva (转@Cfan927) 比较详细

二. 学习Qt

b站有个教学视频,可以先看看,他讲的比较详细 https://www.bilibili.com/video/BV1g4411H78N 我个人感觉看到 P10 就行了,因为我知道看我这篇文章的多半都是合工大的孩子被数据结构作业逼疯才来的,先学这么多 弄懂怎么实现按钮的操作,弄懂什么是信号,什么是槽就可以了

三.实现计算器代码

有两点可能要注意一下(没有这个大作业的可以不看后面这段) 我们的大作业里面有&& || !三种逻辑运算符 !问题不大 主要是&&和|| 这个到时候在计算器输入的时候要输入两个&& 但是我们只入栈一个& 这样方便后面运算 那怎么实现呢? 我们用a来代表你的输入的算式 a[i]遍历这个式子,当 i 指向第一个&时,i++ 再入栈运算符,这样就只入栈了一个运算符

|| 和上面的处理方式一样 但是要注意的时 | 的ascii码是 124 ,判断运算符和数字时要注意

其次要注意&& || !之间的优先级,还有运算联系等

else if(a[i]=='&') { if(a[i+1]=='&') i++; }

类似于上面这样的代码来让它判断

下面放上源码

#include #include #include #include using namespace std; int symbol(char c) //赋予优先级 { switch (c) { case '#': return 0; case '+': return 2; case '-': return 2; case '*': return 3; case '/': return 3; case '(': return 6; case ')': return 1; case '&': return 4; case '|': return 4; case '!': return 5; default: break; } return 0; } double jisuan( char c='#',double b=1,double a=1) { switch (c) { case '+': return b + a; case '-': return b - a; case '*': return b * a; case '/': return b / a; case '&': if(a!=0&&b!=0) return 1; else return 0; case '|': if(a==0&&b==0) return 0; else return 1; default: break; } return 0; } double js(double a) { if(a==0) return 1; else return 0; } int main() { stacks1; stacks2; string a; cout setText(s); ui->textEdit_2->setText(res); }

res是在第二个文本框中的字符串

③ 等号键 : 下面 “= ”的按钮是个特例 我们有两种想法 第一就是直接把你的计算器源码整个放在这个槽函数里面 也可以在外面单独写一个函数,最后return一个值,把这个值传入 = 的槽函数

但是值得注意的有两点 第一 如果你的计算器源码其中一个栈是char类型的,而你的s又是string类型,这样是过不了QT的编译器的 因此要把string转成char型

char *a=s.toLocal8Bit().data();

第二 最后传到设计界面的文本框中的数据应该是Qstring类型 如果你最后的计算结果是 int 或者 double 类型的 要把它转成Qstring的

double num = s1.top(); res = QString::number(num); ui->textEdit_2->setText(res);

num是我的最后计算结果 textEdit_2是我的第二个文本框的对象名

到现在我们的计算器基本上就完成了 还有两点也要注意一下 第一就是我们在写槽函数的时候 输入文本框的字符一定时英文键盘下的字符,不然程序不会进行的 第二就是QT有的错误不会报错,只会警告,尽量把所有的警告也改了,有的警告不影响结果,有的警告会让最后的程序异常关闭,虽然能编译通过 上面两条都是我血的教训,好几个小时看不出到底是那错了,程序一直异常关闭

我能说的也就这么多了,如果还有什么问题可以发在下面 ****有一种营销号的感觉 ****

我的这个计算器的文件在这里 https://gitee.com/jinhesuannaijiaofu/jisuanqi 进去下载那个计算器的文件就好了 下载完成以后用QT打开就OK了 要是看主要部分的代码的话,点开untit 文件里面的widget.cpp文件就行 不用下载就能看

如果能点个赞就更好了!!!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3