Qt实现计算器界面和基本运算
时间:2021-09-07
本文章向大家介绍Qt实现计算器界面和基本运算,主要包括Qt实现计算器界面和基本运算使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
用Qt来实现一个简单的计算器。
按钮设置
//按键 private slots: void on_oneButton_clicked(); void on_twoButton_clicked(); void on_threeButton_clicked(); void on_fireButton_clicked(); void on_fourButton_clicked(); void on_sixButton_clicked(); void on_sevenButton_clicked(); void on_eightButton_clicked(); void on_nineButton_clicked(); void on_zeroButton_clicked(); void on_addButton_clicked(); void on_subButton_clicked(); void on_mulButton_clicked(); void on_divButton_clicked(); void on_leftButton_clicked(); void on_rightButton_clicked(); void on_clearButton_clicked(); void on_deleteButton_clicked(); void on_equalButton_clicked();
//运算 void Widget::on_equalButton_clicked() { QStack<int> s_num, s_opt; char opt[128]={0}; int i=0,tmp=0,num1,num2; //把QString 转换成char* QByteArray ba; ba = expression.toLatin1(); strcpy(opt,ba.data()); while(opt[i] != '\0' || s_opt.empty() != true) { if(opt[i] >= '0' && opt[i] <= '9') { tmp = tmp *10 + opt[i] - '0'; i++; if(opt[i] < '0' || opt[i] > '9') { s_num.push(tmp); tmp = 0; } } else//操作符 { if(s_opt.empty() == true||Priority(opt[i]) >=Priority(s_opt.top()) || (s_opt.top() == '(' && opt[i] != ')')) { s_opt.push(opt[i]); i++; continue; } if(s_opt.top() == '(' && opt[i] == ')') { s_opt.pop(); i++; continue; } if(Priority(opt[i]) <= Priority(s_opt.top())||(opt[i] == ')'&& s_opt.top() !='(')|| (opt[i]=='\0'&& s_opt.empty()!=true)) { char ch = s_opt.top(); s_opt.pop(); switch(ch) { case '+': num1=s_num.top(); s_num.pop(); num2=s_num.top(); s_num.pop(); s_num.push(num1+num2); break; case '-': num1=s_num.top(); s_num.pop(); num2=s_num.top(); s_num.pop(); s_num.push(num2-num1); break; case '*': num1=s_num.top(); s_num.pop(); num2=s_num.top(); s_num.pop(); s_num.push(num1*num2); break; case '/': num1=s_num.top(); s_num.pop(); num2=s_num.top(); s_num.pop(); s_num.push(num2/num1); break; } } } } ui->mainLineEdit->setText(QString::number(s_num.top())); expression.clear(); } int Widget::Priority(char ch) { switch (ch) { case '(': return 3; case '*': case '/': return 2; case '+': case '-': return 1; default: return 0; } }
原文地址:https://www.cnblogs.com/gjzstar/p/15238381.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 曝光埋点方案:recyclerView中的item曝光逻辑实现
- Android中的动画全解!
- Python 爬取留言板留言(二):多线程版+selenium模拟
- 嵌套滑动通用解决方案--NestedScrollingParent2
- Python 爬取留言板留言(一):单进程版+selenium模拟
- Glide-图片加载框架全解(一)- 基本用法
- Python全栈(六)项目前导之1.Redis介绍及数据类型介绍
- 网络请求框架OkHttp3全解系列(一):OkHttp的基本使用
- 网络请求框架OkHttp3全解系列 - (二)OkHttp的工作流程分析
- 这次,我把Android事件分发机制翻了个遍
- 网络请求框架OkHttp3全解系列 - (三)拦截器详解1:重试重定向、桥、缓存(重点)
- Python全栈(七)Flask框架之4.Flask模板继承与案例练习
- 你想要的系列:网络请求框架OkHttp3全解系列 - (四)拦截器详解2:连接、请求服务(重点)
- 不会玩阴阳师的我带你一键下载《阴阳师:百闻牌》所有卡牌并调用百度OCR识别文字信息
- 微信小程序生命周期学习笔记-页面篇