QT课程设计报告.docx
《QT课程设计报告.docx》由会员分享,可在线阅读,更多相关《QT课程设计报告.docx(15页珍藏版)》请在冰豆网上搜索。
QT课程设计报告
成都理工大学
Qt作业设计报告
题目:
简易计算器
学院:
信息科学与技术
专业:
软件工程
姓名:
学号:
2014。
04.19
一、需求分析
当今社会是信息社会,科技经济高速发展的社会,为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生.然而,电脑已经成为当代人生活的必需品,运行在电脑上的计算器成为了人们的生活学习绝佳伴侣。
下面是用C++编写的,基于Qt图形用户界面应用程序框架的计算器,它实现了对整数,浮点数的加﹑减﹑乘﹑除﹑幂运算。
二、设计过程
1.界面设计
在QT设计器中布置好计算器界面,所有按键采用的pushButton控件,显示计算结果采用的是lineEdit控件。
完成的界面如下图所示:
图计算器界面
为了使按钮显示美观,将每个button的属性设置如下:
图button大小、字体属性
为符合人们的使用习惯,将lineEdit空间的属性更改,使得输入的数字和符号出现在空间的右边起。
如图:
图lineEdit控件属性更改
2.控件重命名
将界面布局设计好后,将各个空间改名,例如“0”改为but0.
3.简单信号响应
对于buttonexit退出程序,这样简单的响应,直接在设计器中通过添加信号和槽来完成,如图:
图信号和槽
4.辅助数据成员及函数
为了区分每一次计算和保存操作数、操作符,和辅助函数(如:
输出函数),在calculator.h的类中设定数据成员以及成员函数:
calculat.cpp中辅助函数的实现:
5.数字键的响应
以button0为例,在calculator.cpp文件中添加but0的代码,如下:
6.小数点的响应
当一个操作数已经输入了一个小数点时,将小数点按钮置为不可用,以防用户重复输入小数点,导致输入操作数不合法,如下如:
7.运算功能的响应
以加法为例,向lineEdit中输入显示+号,并在数据成员中保存,以便后面进行计算:
8.清屏的响应
首先将lineEdit的显示清除,再置为0;将一切辅助的数据成员数据重置到新一轮计算的开始状态,如:
运算符为空,操作数为0等。
实现如下:
9.等号的响应
根据数据成员记录的运算符和操作数进行相应的计算,并将得出的结果转化为string显示在lineEdit上,并重置辅助数据成员,准备下一轮的计算开始。
三、程序使用示例
四、总结
✓通过计算器设计,我学到了利用Qt设计简单窗口应用程序的的方法,初步了解了使用QT工具编写窗口程序的新颖,了解了槽和信号等基本知识,学会了如何使用新工具(Qt)帮助程序开发。
✓本计算器实现的功能还只是很少一部分,希望随着自身水平的提高可以将其完善起来。
✓本次程序中还有一个收获是,幂运算开始采用的是QQ输入法中的特殊字符‘ˆ',结果无法显示,后面换成键盘上的‘^’,就能显示了。
五、参考资料
1)《C++GUIQT4编程》(第二版)(JasminBlanchette,MarkSummerfield)电子工业出版社2008
六、附程序源代码
calculator。
h文件:
#ifndefCALCULATOR_H
#defineCALCULATOR_H
#include
#include"ui_calculator.h”
classcalculator:
publicQWidget
{
Q_OBJECT
public:
calculator(QWidget*parent=0,Qt:
:
WFlagsflags=0);
~calculator();
privateslots:
voidon_but0_clicked();
voidon_but1_clicked();
voidon_but2_clicked();
voidon_but3_clicked();
voidon_but4_clicked();
voidon_but5_clicked();
voidon_but6_clicked();
voidon_but7_clicked();
voidon_but8_clicked();
voidon_but9_clicked();
voidon_butJia_clicked();
voidon_butJian_clicked();
voidon_butCheng_clicked();
voidon_butChu_clicked();
voidon_butDeng_clicked();
voidon_butZhengfu_clicked();
voidon_butMi_clicked();
voidon_butDian_clicked();
voidon_butClear_clicked();
private:
Ui:
:
calculatorClassui;
boolfinishedOne;//是否完成了一趟计算
boolhaveDian;//是否已经输入了点
boolhaveOpera;//是否已经输入过操作符
boolnewInput;//清屏后的标志
doublenum1;//操作数
doublenum2;//操作数
charopera;//运算符
QStringstr;//用来进行double和string之间转换
voidclear_lineEdit();//每输入一个操作数或操作符的小清屏
voidinput(charch);//向lineEdit进行输入
voidinputCheck();//输入前的检查
};
#endif//CALCULATOR_H
calculator.cpp文件:
#include”calculator。
h”
#include〈math.h>
#include
#include
#defineP0.000000000000001
calculator:
:
calculator(QWidget*parent,Qt:
:
WFlagsflags)
:
QWidget(parent,flags)
{
ui。
setupUi(this);
finishedOne=true;//是否完成了一趟计算
haveDian=false;//是否已经输入了点
haveOpera=false;//是否已经输入过操作符
newInput=true;//是否是清过屏的
num1=0;
num2=0;
opera='';//初始为空格
}
voidcalculator:
:
on_but0_clicked()
{
inputCheck();
input('0');
}
voidcalculator:
:
on_but1_clicked()
{
inputCheck();
input(’1’);
}
voidcalculator:
:
on_but2_clicked()
{
inputCheck();
input('2’);
}
voidcalculator:
:
on_but3_clicked()
{
inputCheck();
input('3');
}
voidcalculator:
:
on_but4_clicked()
{
inputCheck();
input(’4');
}
voidcalculator:
:
on_but5_clicked()
{
inputCheck();
input(’5');
}
voidcalculator:
:
on_but6_clicked()
{
inputCheck();
input('6’);
}
voidcalculator:
:
on_but7_clicked()
{
inputCheck();
input('7');
}
voidcalculator:
:
on_but8_clicked()
{
inputCheck();
input('8’);
}
voidcalculator:
:
on_but9_clicked()
{
inputCheck();
input(’9');
}
//乘法
voidcalculator:
:
on_butCheng_clicked()
{
num1=ui.lineEdit—〉text()。
toDouble();
clear_lineEdit();
ui。
lineEdit—〉setText("*");
opera=’*’;//记录操作符
haveOpera=true;
}
//加法
voidcalculator:
:
on_butJia_clicked()
{
num1=ui.lineEdit—>text()。
toDouble();
clear_lineEdit();
ui。
lineEdit—〉setText("+");
opera='+’;//记录操作符
haveOpera=true;
}
//减
voidcalculator:
:
on_butJian_clicked()
{
num1=ui.lineEdit-〉text()。
toDouble();
clear_lineEdit();
ui。
lineEdit—>setText("—”);
opera=’—’;//记录操作符
haveOpera=true;
}