QT计算器要点Word格式.docx

上传人:b****1 文档编号:14758316 上传时间:2022-10-24 格式:DOCX 页数:40 大小:632.70KB
下载 相关 举报
QT计算器要点Word格式.docx_第1页
第1页 / 共40页
QT计算器要点Word格式.docx_第2页
第2页 / 共40页
QT计算器要点Word格式.docx_第3页
第3页 / 共40页
QT计算器要点Word格式.docx_第4页
第4页 / 共40页
QT计算器要点Word格式.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

QT计算器要点Word格式.docx

《QT计算器要点Word格式.docx》由会员分享,可在线阅读,更多相关《QT计算器要点Word格式.docx(40页珍藏版)》请在冰豆网上搜索。

QT计算器要点Word格式.docx

●本次我们设计的计算器在功能上大致与Windows系统自带的计算器程序相似,但在某些细节处加入了我们设计同学的独特创新和技巧,具体体现见详细设计部分。

对于我们所设计的科学计算器,其功能大致可以如下划分:

①算术型计算器功能——可以进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)等简单算术计算。

②科学型计算器功能——可以进行乘方、开方、指数、对数、三角函数、等方面的运算。

③一元运算和多元运算——可以进行表达式和简单运算,且切换较为快捷。

1.2功能描述

●对于算术型计算器的功能大家已经非常熟悉,就不再赘述。

这里只对科学型计算器功能中的特殊符号、必要函数及技巧创新功能部分作简单描述。

①特殊符号和函数

Pi——π。

即3.1415926…

Ln——自然对数,ln(x)是以e为底的x的对数

Log——以10为底的对数,10是可以省略的

Sin——正弦函数

Arcsin——反正弦函数

Cos——余弦函数

Tan——正切函数

n!

——阶乘

Mod——取模运算

Clear——清空

等等这些符号有利于我们计算,方便快捷的得出结果。

②使用数据记录:

我们都知道,现在市面上一般的计算器虽然在计算上能满足用户的需求,但对于一些重要的数据和运算过程、记录,就无法实现重要过程和数据的记录,所以这项功能的添加让我们的计算器更加科学化,人性化,用户不必要再担心运算的出错和检查的麻烦。

这也是我们所设计的计算器相比于其他计算器的重要优点之一。

2.详细设计

2.1普通计算功能

(1)界面设计

界面设计我们是使用Qtcreator进行设计的,首先创建一QMainWindow(parent).ui,这个界面为QWidget。

然后在左侧的WidgetBox找相应的控件添加到QMainWindow(parent)里。

首先提出一个lineEdit控件作为算式显示窗口和结果显示窗口,在提取出30个QpushButton为0到9按键和加减乘除按键、括号按键、开根号按键、小数点按键、%按键、取模按键、阶乘按键、取倒按键、等于按键、历史按键、标准/科学模式切换按键。

然后再把各个pushButton名字改成相应的符号,并且改对应pushbutton的属性,保存后取Qtcreator编译QMainWindow(parent).ui,运行程序就可以显示相应界面。

具体界面设计效果如下:

且各组件的属性设置如下:

(2)程序具体实现

现在.h文件中对各个按键在私有槽中进行声明,例如:

publicslots:

voidclickbtn1();

就对1键(槽函数)进行声明,然后就可以在.cpp进行编写程序。

声明first,second两个整形表示第一个输入和第二个输入,然后用Qt(Qstring)封装好的append()函数进行添加,当然,这里牵涉到本程序对Btn按键的函数声明,并且使用setText函数,使其按键符号点击后可以在lineEdit上显示,在这里用的是信号和槽的机制,具体的信号于槽的链接在后面会详细说明。

2.2科学计算器功能

本界面的主要功能是在普通计算器的基础上,添加了一些科学计算的功能,具体实现的操作功能包括三角函数运算()、反三角函数运算()、双曲三角函数运算()、对数运算()、

弧度运算、角度运算、梯度运算。

为了隐藏的需要,我们采用GroupBox的组件,然后设置“”按键,通过点击“”按键可将窗口由标准型切换为科学型(此时“”按键变为“”按键,再点击一次即可变回标准型),切换为科学型窗口后,在普通窗口的基础上添加一些QPushButton按钮,修改其属性,使其变成相应的功能键,再从左边把QComboBox拖到科学计算窗口中,并修改其属性,用户可以在下拉框中,选择自己想要实现的运算类型(如:

弧度、梯度;

不同对数运算),然后用对上述按键在窗口中进行合理布局,最后用QtCreator对所设计的界面进行编译形成ui文件,点击运行即可查看所设计界面。

具体界面设计效果如下:

下拉框中显示的设计如下:

各组件的属性设置如下:

这里仍使用信函和槽连接机制,我们没有使用信号和槽编辑器,而是直接在.cpp文件中添编写其代码来实现,首先在.h文件中对各个按键进行声明,如:

voidclicksin();

就是对sin按键进行声明,再到.cpp文件中编写相应的代码实现其功能,当Jing_zhan_unary变量为ture时,执行clickTrigJIng_zhan_TS(“sin”),或当Jing_zhan_Expression变量为ture时,执行sinBian_lian=true;

clickJing_zhan_Pro("

sin"

"

]"

mu_qianSin);

实现sin的运算功能。

2.3计算历史显示功能

本模块包括本系统的删除、保存功能。

(1)界面介绍

这里我要用两个QpushButton控件和一个LineEdit控件,两个QpushButton控件分别表示删除算式、算式另存为,在修改其属性,再拖拽一个LineEdit控件,它用来显示计算机执行的历史事件,而且还可以在其上点击选择算式。

另存为算式:

首先声明一个另存为的函数voidcalculate:

:

clickHistorySaveas(),添加一个QFileDialog控件作为另存为显示窗口,再把QFileDialog名字改成相应的另存为,并且改对应QFileDialog的属性,然后查询算式表(message),查找最后一个id的值,然后id加一,再把次id和窗口提取的算式存入数据库算式表(message)中,然后通过槽函数ui->

statusBar->

showMessage(Version+"

:

"

+tr("

已保存"

),10000);

查询整个message表把表中的内容显示出来。

删除算式:

先用currentIndex().row()把鼠标点中的行选中。

提出行数,声明model,再用model中封装好的函数删除这一行,在加上警告函数,判断是否删除,就可以了。

2.4删除功能

此功能为删除窗口中的最后一个字符,具体编写过程为:

提取窗口中的内容,并把窗口中的内容存放到一个QString型变量中,然后用Qt现有的已经封装好的函数,把这个变量从左边开始将其最后一个字符去掉,使其长度减少一,将改变后的字符串在存放到这个变量中,再把这个变量重新返回到窗口中,这样就达到删除的功能了。

2.5清空功能

此功能为清空显示窗口,这里用Qt封装好的函数clear(),直接把窗口给清空,这样就达到效果。

2.6操作类型切换功能

在菜单栏里添加操作类型选择按键,在操作类型按键下有一元顺序运算和表达式运算两个子选项,当选择一元顺序运算时,将“(”按键和“)”按键设置为不可点击即,而当选择表达式运算时,将“1/x”按键和“±

”按键设置为不可点击。

由于在不同的操作类型下,有些运算符不适用,故将其设置为不可点击,

这样可以防止用户进行违规操作。

3.系统的实现:

计算分简单计算和科学计算两种功能,又由于要实现表达式的功能,故应该将其分开实现,所以,我们在程序中设置了两逻辑变量进行区分,如下所示。

boolJing_zhan_unary=false;

//一元操作

boolJing_zhan_Expression=true;

//表达式操作

当然,对于下面具体步骤中出现的函数,我们有必要在此说明,这其中也包括整个程序的核心算法。

考虑到程序中出现了众多信号与槽的链接,故采用手工链接的方式进行。

首先在calculate.h中声明如下槽函数:

publicslots:

voidclickSifirla();

voidclickbtn(QString);

voidclickbtn1();

voidclickbtn2();

voidclickbtn3();

voidclickbtn4();

voidclickbtn5();

voidclickbtn6();

voidclickbtn7();

voidclickbtn8();

voidclickbtn9();

voidclickbtn0();

voidclickPoint();

voidclickPointControl();

voidclickClear();

voidclickPlus();

voidclickDecrease();

voidclickMultiply();

voidclickEliminate();

voidclickEql();

voidclickJing_zhan_();

voidclickJing_zhan_2(QStringList&

diziPro,QStringisaret);

voidclickBackspace();

voidclickChangesign();

voidclickSqrt();

voidclick_G();

voidclickCi();

voidclick_1_x();

voidclickJie_cheng();

voidclickSwitch();

voidclickSimple();

voidclickSin();

voidclickCos();

voidclickTan();

voidclickCot();

voidclickPi();

voidclickE();

voidclickArcsin();

voidclickArccos();

voidclickArctan();

voidclickArccot();

voidclickSinh();

voidclickCosh();

voidclickTanh();

voidclickCoth();

voidclickLog();

voidclickHistory();

voidclickHistoryDelete();

voidclickHistorySaveas();

voidclickExpression();

voidclickunary();

voidclickReplaceTur(QLabel*,QLabel*,bool);

voidclickJing_zhan_caozuoleixing();

voidclickJing_zhan_Pro(QString,QString,bool);

voidclickTrigJing_zhan_IO(QStringList&

diziPro,bool&

trigVar,QString,QString);

voidclickTrigJing_zhan_IS(QString);

voidclickYerReplace(QStringList&

diziPro,int,double);

voidclickMod();

voidclickZkuohao();

voidclickYkuoh

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1