简介:
本设计是一个基于Qt框架,应用Qt信号槽机制,一个加减乘除的四则混合运算功能的数字型计算器界面的设计与实现,采用Widget类界面,界面包含一个液晶显示窗口(LCD Number);0-9十个数字按钮以及一个小数点‘.’按钮;“+、-、×、÷、=、<-(删除)、CE(清除所输入的一行数字即当时在屏幕上显示的一行数字)、C(全部清零)、+/-”9个运算符号;输入的数字显示在液晶显示窗口,实现整数和小数的四则运算,按下“=”键后将运算结果显示在液晶显示窗口。该计算器是一个集继承、图形界面、事件处理等面向对象编程知识的综合应用的实例程序。
1.系统功能图:
2.界面实现方法:
本计算器采用了QLCDNumber液晶,PushButton按钮控件,QLCDNumber控件它可以显示几乎任意大小的数字,可以显示十进制、十六进制、八进制或二进制数,很容易使用display()槽连接到数据源,当显示范围以外的数据时,就会发射overflow()信号,返回可以通过setDigitCount()来设置。
通过在Qt Creater环境中新建一个Qt Widgets Application应用程序,并新建一个QWidget窗口类,在Qt Creater界面设计器中加入一个QLCDNumber液晶显示控件及5行4列的20个QPushButton按钮控件,每个按钮对象的text属性设置为0-9数字、+-*/运算符、+/-取反、退格、CE、C、小数点和=值,界面效果如下图所示。
3.功能实现方法:
在设计好界面之后选择需要操作的按键右键选择转到槽如图3-2,此处利用了Qt的信号与槽机制,选择clicked()如图3-3,会跳转到程序代码部分,Qt会自动在widget.h文件的private slots添加函数声明,并且在widget.cpp文件等待用户编写事件的函数体。
图3-2
图3-3
加法功能算法即用户点击键盘数字输入第一个运算数存入预置数组中,点击加号会根据标志位判断此前有几个运算数,如果已有两个则先将其进行运算的结果作为第一个运算数再与下一个输入的运算数进行运算,否则继续读取第二个运算数,当用户按下=等于号将第一个运算数与第二个运算数相加的值显示在LCD上。
减法功能算法即用户点击键盘数字输入第一个运算数存入预置数组中,点击减号会根据标志位判断此前有几个运算数,如果已有两个则先将其进行运算的结果作为第一个运算数再与下一个输入的运算数进行运算,否则继续读取第二个运算数,判断减法的减数与被减数返回正值还是负值,当用户按下=等于号将第一个运算数与第二个运算数相减的值显示在LCD上。
乘法功能算法即用户点击键盘数字输入第一个运算数存入预置数组中,点击乘号会根据标志位判断此前有几个运算数,如果已有两个则先将其进行运算的结果作为第一个运算数再与下一个输入的运算数进行运算,否则继续读取第二个运算数,当用户按下=等于号将第一个运算数与第二个运算数相乘的值显示在LCD上。
除法功能算法即用户点击键盘数字输入第一个运算数存入预置数组中,点击减号会根据标志位判断此前有几个运算数,如果已有两个则先将其进行运算的结果作为第一个运算数再与下一个输入的运算数进行运算,否则继续读取第二个运算数,当用户输入的除数为0时会有提示用户除数不可以为0的弹窗提醒,当用户按下=等于号将第一个运算数与第二个运算数相除的值显示在LCD上
实现代码:
widget.h 文件内容:
1 #ifndef WIDGET_H
2 #define WIDGET_H
3 #include <QWidget>
4 #include <string.h>
5 #include <stdio.h>
6 #include <QDialog>
7 #include <QPaintEv