实验步骤
基于Qt简单计算器设计流程可参考如下步骤
1. 新建Qt工程
① 选择“创建新项目”→“Qt Widgets Application”→“下一步”如下图所示
② 重命名项目名称为Calculator
③ 选择项目位置
④ 进入Qt应用程序向导,一路点击“next”
⑤ 一路next到这步,Base class可以选择QMainWindow或QWidget,要是将来需要菜单栏等组件的话选mainwindow;选好之后点击“next”
⑥ 项目创建完成,代码资源如下,直接运行可以产生一个空白的QWidget窗口
2. 创建界面
此次设计的计算器,主要由按钮和显示框组成。包括“0-9”的数字按钮,运算符“/”“*”“-”“+”,小数点按钮,求值按钮,清零按钮,左右括号()按钮,以及回退按钮。具体设计流程如下。
① 双击前面图中的calculator.ui文件,弹出Qt Designer。
② 按住PushButton 和LineEdit拖到右边的设计区域,就添加成功了,多次添加;
③ 选择主界面,点击上面的九宫格布局;
④ 点击LineEdit控件,点开sizePolicy选项,将水平策略和垂直策略同时更改为Preferred;
⑤ 添加其余的19个按钮,并放在合适位置,将lineEdit控件拉倒右边界,并调整主界面大小;
⑥ 选中全部按钮,按照第④步的方法调整垂直布局策略,并修改每个按钮名字;
⑦ 点击编辑信息与槽按钮;
⑧ 鼠标长按按钮“1”,拖往边上没有控件的空白地方松开,在弹出的界面中,选中左边的clicked()信号,之后在右边点击的编辑按钮进入槽函数编辑界面;
⑨ 点击槽的加号按钮,添加一个numbuttonPress()的槽函数,点击OK
⑩ 再次回到配置连接界面,选中刚刚增加的numbuttonPress()槽函数,点击OK,就将“1”按钮的clicked()信号和numbuttonPress()槽函数映射起来。
⑪ 重复第⑧个步骤,除去“=”号键、“清屏”键和“后退”键,将其余按键的clicked()信号与numbuttonPress()槽函数映射起来;
⑫ 重复第⑧个步骤,新增三个槽函数eqlbtnPress();clearPress();backPress();将“=”号键的clicked()信号与eqlbtnPress()槽函数映射;将“清屏”键的clicked()信号与clearPress()槽函数映射;将“后退”键的clicked()信号与backPress()槽函数映射;
3. 编写按钮代码
① 为了实现刚刚创建的槽函数,首先在Calculator.h文件中新增private slots:在里面声明添加的四个函数成员eqlbtnPress();clearPress();backPress();numbuttonPress();
② 实现numbuttonPress()函数;
③ 实现clearPress(函数);
④ 实现backPress()函数;
⑤ 实现eqlbtnPress()函数,使用solve函数获取表达式的值;
4. 表达式解析和结果计算
当输入表达式完成之后,需要对lineEdit中的表达式进行解析,计算出表达式对应值,可以参考实验指导书上的计算原理及代码,也可使用本文中的算法。本文使用一个solve函数来解析表达式,计算出相应的结果,并显示到结果框中去,具体代码如下:
① Include相关头文件
② 字符串预处理,这里主要是处理类似 -2+3,1+(-3+2)这类负数问题
③ 确定操作符优先级
④ 中缀表达式转后缀表达式
⑤ 计算后缀表达式
⑥ 实现solve函数
5. 编译运行结果
也可以回到ui文件改变字体;