QT课程设计报告
- 格式:doc
- 大小:335.50 KB
- 文档页数:14
下载可编辑 .专业.整理.
题目:简易计算器 学院:信息科学与技术 专业:软件工程 : 学号:
2014.04.1下载可编辑
.专业.整理. 9
一、需求分析 当今社会是信息社会,科技经济高速发展的社会,为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。然而,电脑已经成为当代人生活的必需品,运行在电脑上的计算器成为了人们的生活学习绝佳伴侣。 下面是用C++编写的,基于Qt图形用户界面应用程序框架的计算器,它实现了对整数,浮点数的加﹑减﹑乘﹑除﹑幂运算。
二、设计过程
1.界面设计 在QT设计器中布置好计算器界面,所有按键采用的pushButton控件,显示计算结果采用的是lineEdit控件。完成的界面如下图所示:
图 计算器界面 为了使按钮显示美观,将每个button的属性设置如下: 下载可编辑 .专业.整理. 图 button大小、字体属性 为符合人们的使用习惯,将lineEdit空间的属性更改,使得输入的数字和符号出现在空间的右边起。如图:
图 lineEdit控件属性更改 下载可编辑
.专业.整理. 2.控件重命名 将界面布局设计好后,将各个空间改名,例如“0”改为but0。 3.简单信号响应 对于button exit退出程序,这样简单的响应,直接在设计器中通过添加信号和槽来完成,如图:
图 信号和槽 4.辅助数据成员及函数 为了区分每一次计算和保存操作数、操作符,和辅助函数(如:输出函数),在calculator.h的类中设定数据成员以及成员函数:
calculat.cpp中辅助函数的实现: 下载可编辑
.专业.整理. 下载可编辑
.专业.整理. 5.数字键的响应 以button 0为例,在calculator.cpp文件中添加but0的代码,如下:
6.小数点的响应 当一个操作数已经输入了一个小数点时,将小数点按钮置为不可用,以防用户重复输入小数点,导致输入操作数不合法,如下如:
7.运算功能的响应 以加法为例,向lineEdit中输入显示+号,并在数据成员中保存,以便后面进行计算: 下载可编辑
.专业.整理. 8.清屏的响应 首先将lineEdit的显示清除,再置为0;将一切辅助的数据成员数据重置到新一轮计算的开始状态,如:运算符为空,操作数为0等。实现如下:
9.等号的响应 根据数据成员记录的运算符和操作数进行相应的计算,并将得出的结果转化为string显示在lineEdit上,并重置辅助数据成员,准备下一轮的计算开始。 下载可编辑
.专业.整理. 三、 程序使用示例 下载可编辑
.专业.整理. 四、 总结 ✓ 通过计算器设计,我学到了利用Qt设计简单窗口应用程序的的方法,初步了解了使用QT工具编写窗口程序的新颖,了解了槽和信号等基本知识,学会了如何使用新工具(Qt)帮助程序开发。 ✓ 本计算器实现的功能还只是很少一部分,希望随着自身水平的提高可以将其完善起下载可编辑 .专业.整理. 来。 ✓ 本次程序中还有一个收获是,幂运算开始采用的是QQ输入法中的特殊字符‘ˆ’,结果无法显示,后面换成键盘上的‘^’,就能显示了。
五、 参考资料 1) 《C++ GUI QT 4编程》(第二版)(Jasmin Blanchette, Mark Summerfield) 电子工业 2008
六、 附程序源代码 calculator.h文件: #ifndef CALCULATOR_H #define CALCULATOR_H
#include #include "ui_calculator.h"
class calculator : public QWidget { Q_OBJECT
public: calculator(QWidget *parent = 0, Qt::WFlags flags = 0); ~calculator();
private slots: void on_but0_clicked(); void on_but1_clicked(); void on_but2_clicked(); void on_but3_clicked(); void on_but4_clicked(); void on_but5_clicked(); void on_but6_clicked(); void on_but7_clicked(); void on_but8_clicked(); 下载可编辑 .专业.整理. void on_but9_clicked(); void on_butJia_clicked(); void on_butJian_clicked(); void on_butCheng_clicked(); void on_butChu_clicked(); void on_butDeng_clicked(); void on_butZhengfu_clicked(); void on_butMi_clicked(); void on_butDian_clicked(); void on_butClear_clicked();
private: Ui::calculatorClass ui; bool finishedOne;//是否完成了一趟计算 bool haveDian;//是否已经输入了点 bool haveOpera;//是否已经输入过操作符 bool newInput;//清屏后的标志 double num1;//操作数 double num2;//操作数 char opera;//运算符 QString str;//用来进行double和string之间转换 void clear_lineEdit();//每输入一个操作数或操作符的小清屏 void input(char ch);//向lineEdit进行输入 void inputCheck();//输入前的检查 };
#endif // CALCULATOR_H calculator.cpp文件: #include "calculator.h" #include #include #include #define P 0.000000000000001
calculator::calculator(QWidget *parent, Qt::WFlags flags) : QWidget(parent, flags) { ui.setupUi(this);
finishedOne = true;//是否完成了一趟计算 haveDian = false;//是否已经输入了点 haveOpera = false;//是否已经输入过操作符 newInput = true;//是否是清过屏的 下载可编辑 .专业.整理. num1= 0; num2= 0; opera= ' ';//初始为空格 }
void calculator::on_but0_clicked() { inputCheck(); input('0'); }
void calculator::on_but1_clicked() { inputCheck(); input('1'); }
void calculator::on_but2_clicked() { inputCheck(); input('2'); }
void calculator::on_but3_clicked() { inputCheck(); input('3'); }
void calculator::on_but4_clicked() { inputCheck(); input('4'); }
void calculator::on_but5_clicked() { inputCheck(); input('5'); }
void calculator::on_but6_clicked() { inputCheck(); 下载可编辑 .专业.整理. input('6'); }
void calculator::on_but7_clicked() { inputCheck(); input('7'); }
void calculator::on_but8_clicked() { inputCheck(); input('8'); }
void calculator::on_but9_clicked() { inputCheck(); input('9'); }
//乘法 void calculator::on_butCheng_clicked() { num1 = ui.lineEdit->text().toDouble(); clear_lineEdit(); ui.lineEdit->setText("*");
opera = '*';//记录操作符 haveOpera = true; }
//加法 void calculator::on_butJia_clicked() { num1 = ui.lineEdit->text().toDouble(); clear_lineEdit(); ui.lineEdit->setText("+");
opera = '+';//记录操作符 haveOpera = true; }
//减