linux下实现QT计算器.doc_第1页
linux下实现QT计算器.doc_第2页
linux下实现QT计算器.doc_第3页
linux下实现QT计算器.doc_第4页
linux下实现QT计算器.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计报告(论文) 题目:一种基于Qt的科学计算器系统 诚 信 承 诺本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。如论文涉及任何知识产权纠纷,本人将承担一切责任。 学生签名: 日期:一种基于Qt的科学计算器系统摘 要人类已经进入信息化时代。信息技术发展日新月异,计算器已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。本文针对Qt科学计算器进行研究,增加了很多功能,给用户带来了很多方便,并且提高了用户的运算效率。本文从项目背景、需求分析、软件设计等方面详细说明了Qt科学计算器的开发设计过程。软件采用linux编写代码,Qt 设计界面来开发。计算器包含简单计算功能。计算器具有界面可视化,方便用户操作等特点,并且该计算器的算式提取与存储功能使得算式计算更加快捷方便,为用户进行大量复杂科学计算提供了有效保证。关键词:科学计算器;进制转换;算式提取; Qt English titleAbstractMankind has entered the information age. The rapid development of information technology, the calculator has entered all spheres of life of the people, an integral part of modern life, a large complex calculations the human brain is incapable of, and error-prone. For Qt scientific calculator, adding a lot of features, a lot of convenience to the user, and improve the operational efficiency of the user.From the project background, requirements analysis, software design and other aspects of a detailed description of the development of the design process of the Qt scientific calculator. The software uses the Linux write code, Qt interface design to develop. The calculator contains a simple calculation functions.The calculator interface visualization, user-friendly operation, and the calculator formula extraction and storage features make the formula quicker and more convenient for the user to carry out a large number of complex scientific calculations provide an effective guarantee.Keyword: Scientific calculators; binary conversion; formula extract; Qt 目 录摘 要IAbstractII第一章 绪论11.1 项目背景11.2 项目内容和要求11.2.1 题目介绍11.2.2 题目要求11.3 项目特点及意义1第二章 需求分析32.1 功能需求一32.2 功能分析32.3 安全性分析42.4 可行性分析42.5 系统设计工具42.5.1 fedora技术简介42.5.2 QSqlite数据库技术4第三章 软件设计63.1 数据库设计63.1.1 实体属性图63.1.2 关系模型设计63.1.3 数据库结构设计7第四章 简单的计算器84.1项目目的84.2项目内容84.3项目步骤8第五章 计算器程序的实现11第六章 源代码的分析说明14第七章 编译运行20第八章 计算器程序的移植21致 谢23参考文献24第一章 绪论1.1 项目背景随着计算机的飞速发展,人类已经进入信息化时代。信息技术发展日新月异,计算已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。以前的计算器只能进行简单的加减乘除四则运算,而且只能进行单步运算,如果遇到较长的算式时就得让用户一步一步输入,浪费很多时间,还会可能遗漏数据内容,让用户得多次输入算式验证,如果一次错误就得验证多遍,浪费时间效率低下。随着科技的发展,人们所学习的内容越来越多,需求越来越广泛。本文设计的计算器扩大了用户的运算领域。并且考虑到用户有时常用一些算式,提高了用户的效率,方便了用户的操作,本文设计中主要采用的技术为Qt ,Qt 为设计可视化界面,通过软件的设计可以快速设计出自己需要的界面,然后再到编写各个按键的槽函数与算法。上网查找资料,看书查找例子。1.2 项目内容和要求1.2.1 题目介绍设计一个功能齐备的QT科学计算器,具有算式编辑计算和普通计算窗口。具体要求如下:可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。三角函数可设置度或弧度。设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。普通计算窗口:支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。1.2.2 题目要求(1)实现二进制、八进制、十进制、十六进制之间的转换;(2)实现对算式的编辑、存储、粘贴、修改、计算;(3)算式长度可达256个字符;(4)实现普通计算和科学计算;(5)实现大中小括号和各类不同函数及位运算;(6)支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换;(7)实现对各个按键的帮助功能;(8)显示当前日期时间功能;采用高级程序设计语言,编码规范清晰,关键算法或处理须加注释说明。1.3 项目特点及意义本文对计算器进行设计,比传统计算其增加了许多功能,使用更方便,主要有以下几个特点:(1)计算速度快,节省时间、人力(2)普通窗口可以进行各进制的加减乘除运算。(3)科学计算窗口可以进行小括号、中括号、大括号,正弦、余弦,角度,弧度,包括普通窗口的运算。(4)可对算式进行存储,添加,删除等功能。 (5)有帮助功能,可以通过查询查询个按键的功能,可以对按键功能添加、删除。 (6)提供良好的人机交互界面,操作简单快捷。QT科学计算器比传统计算器多了很多功能,可以进行普通窗口计算,也可以进行科学窗口计算。普通窗口计算时可以进行各种进制的四则运算,还可以把数字通过进制转换,得到需要的数据。科学窗口计算时可以把整个算式输入进行计算,这样避免因输入的数据过多而得多次验证,只需确保输入的算式正确就可以得到正确的结果。可以把常用的算式保存起来,这样下次再用时用户可以直接提取算式,避免了因再次输入算式而浪费时间,提到了效率。科学计算式还可以进行,正弦、余弦、角度、弧度、开方、平方、或与非等运算,并且增加了括号符号,使得算式具有优先级。提高运算效率。并增加了帮助功能,使得用户及时查询帮助功能,快速学会使用操作。25第二章 需求分析2.1 功能需求一在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C+程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用C+和Qt的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。本文的程序设计设计工作环境为Linux +QT Creator ,在程序设计中,采用了结构化与面向对象两种解决问题的方法。2.2 功能分析1).普通窗口计算设计这一模块要求进行加减乘除运算。支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。2).科学算式窗口计算设计(1)可以对算式进行编辑、存储、粘贴、修改、计算。(2)算式长度可达256个字符。(3)算式内可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。(4)三角函数可设置度或弧度。(5)设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。3).帮助功能实现设计(1)通过帮助键可以查找各键的功能。(2)可以对帮助里的功能添加删除。4).时间功能设计可以显示当前时间,并且随着电脑时间的改变而改变。5).算式编辑(1)可以对输入的算式保存。(2)可以添加算式。(3)可以删除算式。2.3 安全性分析使用Qt自带的QSqlite数据库,进行存储算式,对算式进行添加、保存、删除功能,并且在帮助功能上也使用此数据库,把各个按键的功能村如此数据库中。还可以添加和删除,非常方便。并且此程序界面使用Qt designer进行布局,这样对各个控件进行布局,排版结构时不容易出错,快速便捷。提高软件的安全性。2.4 可行性分析计算器是日常生活中非常便捷有效的工具,它具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,他大大的提高了我们的效率,节省了时间,可促进科技的发展,还可以用来存储算式,可以方便下次使用,采用Qt编写,Qt designer设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样在编写代码时就不用浪费时间对控件进行声明等代码了。这降低了程序员的难度,提高了程序员的效率,并且上手快,具有一定的可行性。技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。在技术上,主要是采用linux,可以进行复杂的数据库操作,进行算是的增、删、改、查等功能。用Qt编写,有些类似C+,但大多数都是Qt封装好的函数。在linux中安装Qt软件,配置环境变量,并安装Qt插件。从而用Qt 进行制作界面,做出的效果既美观又快捷方便。使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,可以快捷的获得计算结果,给人们带来方便,对人们的生活有很大的帮助。2.5 系统设计工具2.5.1 fedora技术简介Fedora (第七版以前为Fedora Core)是一款基于 Linux 的操作系统,也是一组维持计算机正常运行的软件集合。Fedora 由Fedora Project社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由和开源的操作系统。Fedora 项目以社区的方式工作,引领创新并传播自由代码和内容,是世界各地爱好、使用和构建自由软件的社区朋友的代名词。Fedora基于Red Hat Linux,在Red Hat Linux终止发行后,红帽公司计划以Fedora来取代Red Hat Linux在个人领域的应用,而另外发行的Red Hat Enterprise Linux(Red Hat企业版Linux,RHEL)则取代Red Hat Linux在商业应用的领域。Fedora的功能对于用户而言,它是一套功能完备、更新快速的免费操作系统,而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。2.5.2 QSqlite数据库技术SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的(1)Qt designer技术介绍简单的来说QT Designer是一个GUI的工具。这个工具可以帮助我们来加快写QT 程序的速度.利用QT Designer可以用一种所见既所得的方式,来产生QT程序的GUI介面的程式码.通过增加一些功能,就可以完成一个程序了.利用QT Designer可以非常快速的学会QT,而我们这里说利用QT Designer来学习QT而不是利用QT Designer来写QT,这里的区别就在于QT Designer所产生的程序代码有些繁琐,运行起来也比较的慢些,我们这里只是利用QT Designer来帮助我们学习,而不是直接去运行QT Designer生成的程序,在这里Qt designer与vs2008连接在一起,安装qt-win-opensource-4.7.3-vs2008.exe,在安装vs的qt插件qt-vs-addin-1.1.9.exe,在配置环境变量:QT = your Qt-root-folder;在 PATH中添加: “;%QT%bin”。然后就可以用Qt designer中的控件进行制作程序界面,并且可以直接修改属性,这样可以在代码量上节省不少时间。(2)Qt技术介绍QT 是一个跨平台的 C+ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。支持 Linux 平台。伴随着 KDE 的快速发展和普及,QT 很可能成为 Linux 窗口平台上进行软件开发时的 GUI 首选。信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C+ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C+ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。 信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生 core dumps。在这里我设计的主窗口为:QWidget,而在帮助窗口为:QDialog。第三章 软件设计3.1 数据库设计数据库在一个管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据库的完整性和一致性。同时,合理的数据库结构也将有利于程序的实现。3.1.1 实体属性图E-R图是实体之间联系的一个简单表述,下面详细介绍各实体的属性:算式信息算式编号算式名字图3.1算式实体属性图算式实体属性如图3.1,包括算式id,算式名字。按键信息按键功能按键名按键编号图3.2按键信息实体属性图按键信息实体属性如图3.2,包括按键编号,按键名,按键功能。3.1.2 关系模型设计本系统中主要的关系模型设计如下:算式信息(编号,算式名);按键信息(编号,按键名,按键功能);3.1.3 数据库结构设计每个数据文件均有一张定义表。其数据库各表的表头信息更为详细的反映数据间的关系。本系统数据库的内容包括算式表、帮主功能表。表的具体设计如下所示:(1)算式表用来存储算是编号和算式名,表名:message。本表用来存储已用户常用的算式,其中可以对算式进行保存、删除、修改,方便用户及使用到常用的式子,提高用户效率。算式表如表3.1所示。表3.1算式表字段名称数据类型长度备注编号Int4算是编号(Id)算是名QString16算式(formulanumber)(2)按键信息表用来存储按键编号,按键名,按键功能,表名:helpmessage。本表用来实现帮助功能,存储帮助功能中按键的信息,可以查看所有的按键功能,也可以看单个按键信息,还可以对案件信息进行增加和删除。按键表如表3.2所示。表3.2按键表字段名称数据类型长度备注编号自动编号长整型为主码、唯一(id)按键名Vchar1按键名(helpname)功能Vchar1按键功能(explain)第四章 简单的计算器4.1项目目的(1)熟悉QtCreator的简单操作。(2)了解Qt程序编写框架。(3)了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。4.2项目内容(1)查看API手册,学习简单的Qt类的使用,如QLineEdit、QPushButton等。(2)用QtCreator创建工程,用Qt编写计算器程序。(3)对计算器程序进行移植。4.3项目步骤创建工程1)打开QtCreator,如图F-1所示。图F-12)选择File-New File or Project,然后在弹出的对话框中选择Other Project-Empty Qt project(如图F-2所示),然后进入下一步。图23)定义新工程的工程名并选择保存路径(如图F-3所示),然后进入下一步。图34)选择Qt版本,这里选择使用Qt4.7.1,取消对Qt in PATH的选择(如图4所示),然后进入下一步,完成新工程的创建(如图F-5所示)。图F-4图F-5第五章 计算器程序的实现主要工作:一是实现计算器的图形界面;二是实现按键事件和该事件对应的功能绑定,即信号和对应处理槽函数的绑定。图形界面的实现通过分析可知,需要16个按键和一个显示框,同时考虑到整体的排布,还需要水平布局器和垂直布局器。通过组织这些类我们可以实现一个简单的带有数字09,可以进行简单四则运算且具有清屏功能的计算器。对于这些类的具体操作会在后面的代码中详细说明。5.1信号和对应槽函数的绑定分析计算器的按键我们可以把按键事件分为以下三类,一是简单的数字按键,主要进行数字的录入,这类按键包括按键09;二是运算操作键,用于输入数学运算符号,进行数学运算和结果的显示,这类按键包括“+”,“-”,“*”,“/”,“=”;三是清屏操作键,用于显示框显示信息的清除。5.2进入刚才创建的空工程,双击左侧的C,在主编辑框中目前显示C的内容为空,如图F-6所示。这是因为目前什么文件都没有添加的缘故。图65.3添加文件calculator.h在工程Calculator上面点击右键,然后点击Add New,选择添加C+ Header File(如图F-7所示),进入下一步后输入文件名calculator.h(如图F-8所示),然后完成文件的添加。图7图F-85.4添加文件calculator.cpp和main.cpp与添加文件calculator.h的过程类似,只是在选择文件类型时选择为C+ Source File。完成后可以查看C文件的内容,整个工程的文件结构如图F-9所示。图F-9第六章 源代码的分析说明6.1对calculator.h源代码的简要说明#ifndef CALCULATOR_H#define CALCULATOR_H /对calculator.h头文件的声明#include/包含主窗体类#include/包含按键类#include/包含垂直布局器类#include/包含水平布局器类#include/包含显示框类class Calculator : publicQWidget/计算器继承自主窗体类 Q_OBJECT /必须加上这句,如果要调用信号,槽函数的操作的话public: Calculator(); /计算器类的构造函数 Calculator(); /计算器类的析构函数public slots: /定义各个按键按下后对应操作处理的槽函数voidzeroButtonPress();voidoneButtonPress();voidtwoButtonPress();voidthreeButtonPress();voidfourButtonPress();voidfiveButtonPress();voidsixButtonPress();voidsevenButtonPress();voideightButtonPress();voidnineButtonPress();voidaddButtonPress();voidsubButtonPress();voidmulButtonPress();voiddivButtonPress();voidclearButtonPress();voidequButtonPress();private:QLineEdit *operateEdit;/声明显示框QPushButton *zeroButton;/声明数字按键QPushButton *oneButton;QPushButton *twoButton;QPushButton *threeButton;QPushButton *fourButton;QPushButton *fiveButton;QPushButton *sixButton;QPushButton *sevenButton;QPushButton *eightButton;QPushButton *nineButton;QPushButton *clearButton;/声明运算符按键QPushButton *addButton;QPushButton *subButton;QPushButton *divButton;QPushButton *mulButton;QPushButton *equButton;QHBoxLayout *firstLayout;/声明水平布局器,该布局器主要对16个按键进行布局QHBoxLayout *secondLayout;QHBoxLayout *thirdLayout;QHBoxLayout *fourthLayout;QVBoxLayout *mainLayout;/声明垂直布局器,该布局器主要对主窗体上面的空间进行排布QString input1;/计算器第一个运算操作数QString input2;/计算器第二个运算操作数char operate;/运算符;#endif/ CALCULATOR_H 对calculator.cpp源代码的简要说明/首先是构造函数的实现:Calculator:Calculator()operateEdit = newQLineEdit(this);/初始化显示框operateEdit-setReadOnly(true); /设置显示框为只读operateEdit-setText(tr(0);/初始化显示框显示数据为0zeroButton = newQPushButton;/初始化按键zeroButton-setText(tr(0);/设置按键上显示的标签,以下对按键相关的操作类似oneButton = newQPushButton;oneButton-setText(tr(1);twoButton = newQPushButton;twoButton-setText(tr(2);threeButton = newQPushButton;threeButton-setText(tr(3);fourButton = newQPushButton;fourButton-setText(tr(4);fiveButton = newQPushButton;fiveButton-setText(tr(5);sixButton = newQPushButton;sixButton-setText(tr(6);sevenButton = newQPushButton;sevenButton-setText(tr(7);eightButton = newQPushButton;eightButton-setText(tr(8);nineButton = newQPushButton;nineButton-setText(tr(9);clearButton = newQPushButton;clearButton-setText(tr(Clear);addButton = newQPushButton;addButton-setText(tr(+);subButton = newQPushButton;subButton-setText(tr(-);mulButton = newQPushButton;mulButton-setText(tr(*);divButton = newQPushButton;divButton-setText(tr(/);equButton = newQPushButton;equButton-setText(tr(=);firstLayout = newQHBoxLayout;/初始化水平布局器firstLayoutfirstLayout-addWidget(zeroButton); /把按键zeroButton添加到firstLayoutfirstLayout-addWidget(oneButton); /把按键oneButton添加到firstLayoutfirstLayout-addWidget(twoButton); /把按键twoButton添加到firstLayoutfirstLayout-addWidget(addButton); /把按键threeButton添加到firstLayout,以下对水平布局器的操 /作类似secondLayout = newQHBoxLayout;secondLayout-addWidget(threeButton);secondLayout-addWidget(fourButton);secondLayout-addWidget(fiveButton);secondLayout-addWidget(subButton);thirdLayout = newQHBoxLayout;thirdLayout-addWidget(sixButton);thirdLayout-addWidget(sevenButton);thirdLayout-addWidget(eightButton);thirdLayout-addWidget(mulButton);fourthLayout = newQHBoxLayout;fourthLayout-addWidget(nineButton);fourthLayout-addWidget(clearButton);fourthLayout-addWidget(equButton);fourthLayout-addWidget(divButton);mainLayout = newQVBoxLayout(this);/初始化垂直布局器mainLayoutmainLayout-addWidget(operateEdit); /把显示数据框operateEdit加到mainLayoutmainLayout-addLayout(firstLayout); /把水平布局器firstLayout添加到mainLayoutmainLayout-addLayout(secondLayout); /把水平布局器secondLayout添加到mainLayoutmainLayout-addLayout(thirdLayout); /把水平布局器thirdLayout添加到mainLayoutmainLayout-addLayout(fourthLayout); /把水平布局器fourthLayout添加到mainLayoutconnect(zeroButton,SIGNAL(clicked(),this,SLOT(zeroButtonPress();/把按键zeroButton的按下事件同zeroButtonPress()绑定到一起,以下操作类似connect(oneButton,SIGNAL(clicked(),this,SLOT(oneButtonPress();connect(twoButton,SIGNAL(clicked(),this,SLOT(twoButtonPress();connect(threeButton,SIGNAL(clicked(),this,SLOT(threeButtonPress();connect(fourButton,SIGNAL(clicked(),this,SLOT(fourButtonPress();connect(fiveButton,SIGNAL(clicked(),this,SLOT(fiveButtonPress();connect(sixButton,SIGNAL(clicked(),this,SLOT(sixButtonPress();connect(sevenButton,SIGNAL(clicked(),this,SLOT(sevenButtonPress();connect(eightButton,SIGNAL(clicked(),this,SLOT(eightButtonPress();connect(nineButton,SIGNAL(clicked(),this,SLOT(nineButtonPress();connect(addButton,SIGNAL(clicked(),this,SLOT(addButtonPress();connect(subButton,SIGNAL(clicked(),this,SLOT(subButtonPress();connect(mulButton,SIGNAL(clicked(),this,SLOT(mulButtonPress();connect(divButton,SIGNAL(clicked(),this,SLOT(divButtonPress();connect(equButton,SIGNAL(clicked(),this,SLOT(equButtonPress();connect(clearButton,SIGNAL(clicked(),this,SLOT(clearButtonPress();this-setWindowTitle(tr(Calculator);/设置窗体标题为Calculator input2= 0;/初始化运算操作数2为0 input1 = 0;/初始化运算操作数1为0 operate = 0;/初始化运算符为0/然后是析构函数的实现:Calculator:Calculator()/析构函数主要完成对构造函数中所声明的QLineEdit、QPushButton、/QHBoxLayout、QVBoxLayout类的对象的回收工作(可以不定义析构函数,程序运行结束时会自/动调用系统默认的析构函数)if (operateEdit != NULL) / operateEdit = NULL;deleteoperateEdit; if (zeroButton != NULL) zeroButton = NULL;deletezeroButton;./根据前面对按键事件的分析,有数字输入键,运算操作符输入键和清屏键三种,故对每种事/件的槽响应函数都只说明一种,其他依此类推。/数字输入键响应槽函数,以按键“1”为例:void Calculator:oneButtonPress()if(input2=0)/如果当前显示框为0 input2=1;/变0为1 else/如果当前显示框不为0 input2= operateEdit-text(); input2.append(tr(1);/在显示的数据后面追加1 operateEdit-setText(input2);/更新显示框中的显示信息/运算操作符输入键响应槽函数,以按键“+”为例:void Calculator:addButtonPress()floatfirst,second; input2= operateEdit-text();/把当前显示的数据保存到运算操作数2中if(operate = 0)/如果是第一次按下运算符键 input1 = input2;/把运算操作数2中的数据保存到运算操作数1中 input2= 0;/清除运算操作数2中的数据 operate = +;/把运算符键置+ else/如果是第二次按下运算符键 second=input2.toFloat();/把运算操作数2中的数据转化为浮点类型 first=input1.toFloat();/把运算操作数1中的数据转化为浮点类型switch(operate)/根据当前的运算符判断做何操作 case+:first = first+second;break;case-:first = first-second;break;case*:first = first*second;break;case/:first = first/second;break; input1 = QString:number(first,f,10);/把运算的结果转化成为可以在显示框显示的类型 input2 = 0;/清除运算操作数2中的数据 operate = +;/把运算符键置“+” operateEdit-setText(input1);/更新显示框中的显示内容/清屏操作响应函数:void Calculator:clearButtonPress() input2=0;/把运算操作数2清零 input1=0;/把运算操作数1清零operateEdit-setText(input2); /更新显示框中的显示内容对main.cpp源代码的简要说明#include /包含应用程序类#include calculator.h/包含计算器类int main(intargc, char *argv)/main函数的标准写法QApplication app(argc, argv); /创建一个QApplication对象,管理应用程序的资源 Calculator mainwindow; /产生一个计算器对象mainwindow.showMaximized();/显示计算器窗体(默认以最大化的形式显示) return app.exec();/让程序进入消息循环,等待可能的菜单、工具条、鼠标等的输入,进行响应。第七章 编译运行7.1完成源程序的编辑后,可以直接点击图F-10中所示的运行按钮,这时QtCreator会自动编译源程序并生成可执行程序。图F-107.2计算器程序在界面如图F-11所示。图F-11第八章 计算器程序的移植上面所说的可执行程序是由QtCreator调用qmake命令生成Makefile文件后调用ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论