实验四 qt编写简单的计算器.doc_第1页
实验四 qt编写简单的计算器.doc_第2页
实验四 qt编写简单的计算器.doc_第3页
实验四 qt编写简单的计算器.doc_第4页
实验四 qt编写简单的计算器.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

实验四QT编写简单的计算器一、【实验目的】1熟悉QTCREATOR的简单操作。2了解QT程序编写框架。3了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。二、【实验内容】1查看API手册,学习简单的QT类的使用,如QLINEEDIT、QPUSHBUTTON等。2用QTCREATOR创建工程,用QT编写计算器程序。3对计算器程序进行移植。三、【实验步骤】1创建工程1打开QTCREATOR,如图1所示。图12选择FILENEWFILEORPROJECT,然后在弹出的对话框中选择OTHERPROJECTEMPTYQTPROJECT(如图2所示),然后进入下一步。图23定义新工程的工程名并选择保存路径(如图3所示),然后进入下一步。图34选择QT版本,这里选择使用QT471,取消对QTINPATH的选择(如图4所示),然后进入下一步,完成新工程的创建(如图5所示)。图4图52计算器程序的实现计算器程序主要分以下两部分工作一是实现计算器的图形界面;二是实现按键事件和该事件对应的功能绑定,即信号和对应处理槽函数的绑定。1计算器图形界面的实现通过分析计算器的功能我们可知,需要16个按键和一个显示框,同时考虑到整体的排布,还需要水平布局器和垂直布局器。通过组织这些类我们可以实现一个简单的带有数字09,可以进行简单四则运算且具有清屏功能的计算器。对于这些类的具体操作会在后面的代码中详细说明。2信号和对应槽函数的绑定分析计算器的按键我们可以把按键事件分为以下三类,一是简单的数字按键,主要进行数字的录入,这类按键包括按键09;二是运算操作键,用于输入数学运算符号,进行数学运算和结果的显示,这类按键包括“”,“”,“”,“/”,“”;三是清屏操作键,用于显示框显示信息的清除。3进入刚才创建的空工程,双击左侧的CALCULATORPRO,在主编辑框中目前显示CALCULATORPRO的内容为空,如图6所示。这是因为目前什么文件都没有添加的缘故。图64添加文件CALCULATORH在工程CALCULATOR上面点击右键,然后点击ADDNEW,选择添加CHEADERFILE(如图7所示),进入下一步后输入文件名CALCULATORH(如图8所示),然后完成文件的添加。图7图85添加文件CALCULATORCPP和MAINCPP与添加文件CALCULATORH的过程类似,只是在选择文件类型时选择为CSOURCEFILE。完成后可以查看CALCULATORPRO文件的内容,整个工程的文件结构如图9所示。图93计算器程序源代码的分析说明1对CALCULATORH源代码的简要说明IFNDEFCALCULATOR_HDEFINECALCULATOR_H/对CALCULATORH头文件的声明INCLUDE/包含主窗体类INCLUDE/包含按键类INCLUDE/包含垂直布局器类INCLUDE/包含水平布局器类INCLUDE/包含显示框类CLASSCALCULATORPUBLICQWIDGET/计算器继承自主窗体类Q_OBJECT/必须加上这句,如果要调用信号,槽函数的操作的话PUBLICCALCULATOR/计算器类的构造函数CALCULATOR/计算器类的析构函数PUBLICSLOTS/定义各个按键按下后对应操作处理的槽函数VOIDZEROBUTTONPRESSVOIDONEBUTTONPRESSVOIDTWOBUTTONPRESSVOIDTHREEBUTTONPRESSVOIDFOURBUTTONPRESSVOIDFIVEBUTTONPRESSVOIDSIXBUTTONPRESSVOIDSEVENBUTTONPRESSVOIDEIGHTBUTTONPRESSVOIDNINEBUTTONPRESSVOIDADDBUTTONPRESSVOIDSUBBUTTONPRESSVOIDMULBUTTONPRESSVOIDDIVBUTTONPRESSVOIDCLEARBUTTONPRESSVOIDEQUBUTTONPRESSPRIVATEQLINEEDITOPERATEEDIT/声明显示框QPUSHBUTTONZEROBUTTON/声明数字按键QPUSHBUTTONONEBUTTONQPUSHBUTTONTWOBUTTONQPUSHBUTTONTHREEBUTTONQPUSHBUTTONFOURBUTTONQPUSHBUTTONFIVEBUTTONQPUSHBUTTONSIXBUTTONQPUSHBUTTONSEVENBUTTONQPUSHBUTTONEIGHTBUTTONQPUSHBUTTONNINEBUTTONQPUSHBUTTONCLEARBUTTON/声明运算符按键QPUSHBUTTONADDBUTTONQPUSHBUTTONSUBBUTTONQPUSHBUTTONDIVBUTTONQPUSHBUTTONMULBUTTONQPUSHBUTTONEQUBUTTONQHBOXLAYOUTFIRSTLAYOUT/声明水平布局器,该布局器主要对16个按键进行布局QHBOXLAYOUTSECONDLAYOUTQHBOXLAYOUTTHIRDLAYOUTQHBOXLAYOUTFOURTHLAYOUTQVBOXLAYOUTMAINLAYOUT/声明垂直布局器,该布局器主要对主窗体上面的空间进行排布QSTRINGINPUT1/计算器第一个运算操作数QSTRINGINPUT2/计算器第二个运算操作数CHAROPERATE/运算符ENDIF/CALCULATOR_H2对CALCULATORCPP源代码的简要说明首先是构造函数的实现CALCULATORCALCULATOROPERATEEDITNEWQLINEEDITTHIS/初始化显示框OPERATEEDITSETREADONLYTRUE/设置显示框为只读OPERATEEDITSETTEXTTR“0“/初始化显示框显示数据为0ZEROBUTTONNEWQPUSHBUTTON/初始化按键ZEROBUTTONSETTEXTTR“0“/设置按键上显示的标签,以下对按键相关的操作类似ONEBUTTONNEWQPUSHBUTTONONEBUTTONSETTEXTTR“1“TWOBUTTONNEWQPUSHBUTTONTWOBUTTONSETTEXTTR“2“THREEBUTTONNEWQPUSHBUTTONTHREEBUTTONSETTEXTTR“3“FOURBUTTONNEWQPUSHBUTTONFOURBUTTONSETTEXTTR“4“FIVEBUTTONNEWQPUSHBUTTONFIVEBUTTONSETTEXTTR“5“SIXBUTTONNEWQPUSHBUTTONSIXBUTTONSETTEXTTR“6“SEVENBUTTONNEWQPUSHBUTTONSEVENBUTTONSETTEXTTR“7“EIGHTBUTTONNEWQPUSHBUTTONEIGHTBUTTONSETTEXTTR“8“NINEBUTTONNEWQPUSHBUTTONNINEBUTTONSETTEXTTR“9“CLEARBUTTONNEWQPUSHBUTTONCLEARBUTTONSETTEXTTR“CLEAR“ADDBUTTONNEWQPUSHBUTTONADDBUTTONSETTEXTTR“SUBBUTTONNEWQPUSHBUTTONSUBBUTTONSETTEXTTR“MULBUTTONNEWQPUSHBUTTONMULBUTTONSETTEXTTR“DIVBUTTONNEWQPUSHBUTTONDIVBUTTONSETTEXTTR“/“EQUBUTTONNEWQPUSHBUTTONEQUBUTTONSETTEXTTR“FIRSTLAYOUTNEWQHBOXLAYOUT/初始化水平布局器FIRSTLAYOUTFIRSTLAYOUTADDWIDGETZEROBUTTON/把按键ZEROBUTTON添加到FIRSTLAYOUTFIRSTLAYOUTADDWIDGETONEBUTTON/把按键ONEBUTTON添加到FIRSTLAYOUTFIRSTLAYOUTADDWIDGETTWOBUTTON/把按键TWOBUTTON添加到FIRSTLAYOUTFIRSTLAYOUTADDWIDGETADDBUTTON/把按键THREEBUTTON添加到FIRSTLAYOUT,以下对水平布局器的操作类似SECONDLAYOUTNEWQHBOXLAYOUTSECONDLAYOUTADDWIDGETTHREEBUTTONSECONDLAYOUTADDWIDGETFOURBUTTONSECONDLAYOUTADDWIDGETFIVEBUTTONSECONDLAYOUTADDWIDGETSUBBUTTONTHIRDLAYOUTNEWQHBOXLAYOUTTHIRDLAYOUTADDWIDGETSIXBUTTONTHIRDLAYOUTADDWIDGETSEVENBUTTONTHIRDLAYOUTADDWIDGETEIGHTBUTTONTHIRDLAYOUTADDWIDGETMULBUTTONFOURTHLAYOUTNEWQHBOXLAYOUTFOURTHLAYOUTADDWIDGETNINEBUTTONFOURTHLAYOUTADDWIDGETCLEARBUTTONFOURTHLAYOUTADDWIDGETEQUBUTTONFOURTHLAYOUTADDWIDGETDIVBUTTONMAINLAYOUTNEWQVBOXLAYOUTTHIS/初始化垂直布局器MAINLAYOUTMAINLAYOUTADDWIDGETOPERATEEDIT/把显示数据框OPERATEEDIT加到MAINLAYOUTMAINLAYOUTADDLAYOUTFIRSTLAYOUT/把水平布局器FIRSTLAYOUT添加到MAINLAYOUTMAINLAYOUTADDLAYOUTSECONDLAYOUT/把水平布局器SECONDLAYOUT添加到MAINLAYOUTMAINLAYOUTADDLAYOUTTHIRDLAYOUT/把水平布局器THIRDLAYOUT添加到MAINLAYOUTMAINLAYOUTADDLAYOUTFOURTHLAYOUT/把水平布局器FOURTHLAYOUT添加到MAINLAYOUTCONNECTZEROBUTTON,SIGNALCLICKED,THIS,SLOTZEROBUTTONPRESS/把按键ZEROBUTTON的按下事件同ZEROBUTTONPRESS绑定到一起,以下操作类似CONNECTONEBUTTON,SIGNALCLICKED,THIS,SLOTONEBUTTONPRESSCONNECTTWOBUTTON,SIGNALCLICKED,THIS,SLOTTWOBUTTONPRESSCONNECTTHREEBUTTON,SIGNALCLICKED,THIS,SLOTTHREEBUTTONPRESSCONNECTFOURBUTTON,SIGNALCLICKED,THIS,SLOTFOURBUTTONPRESSCONNECTFIVEBUTTON,SIGNALCLICKED,THIS,SLOTFIVEBUTTONPRESSCONNECTSIXBUTTON,SIGNALCLICKED,THIS,SLOTSIXBUTTONPRESSCONNECTSEVENBUTTON,SIGNALCLICKED,THIS,SLOTSEVENBUTTONPRESSCONNECTEIGHTBUTTON,SIGNALCLICKED,THIS,SLOTEIGHTBUTTONPRESSCONNECTNINEBUTTON,SIGNALCLICKED,THIS,SLOTNINEBUTTONPRESSCONNECTADDBUTTON,SIGNALCLICKED,THIS,SLOTADDBUTTONPRESSCONNECTSUBBUTTON,SIGNALCLICKED,THIS,SLOTSUBBUTTONPRESSCONNECTMULBUTTON,SIGNALCLICKED,THIS,SLOTMULBUTTONPRESSCONNECTDIVBUTTON,SIGNALCLICKED,THIS,SLOTDIVBUTTONPRESSCONNECTEQUBUTTON,SIGNALCLICKED,THIS,SLOTEQUBUTTONPRESSCONNECTCLEARBUTTON,SIGNALCLICKED,THIS,SLOTCLEARBUTTONPRESSTHISSETWINDOWTITLETR“CALCULATOR“/设置窗体标题为CALCULATORINPUT2“0“/初始化运算操作数2为0INPUT1“0“/初始化运算操作数1为0OPERATE0/初始化运算符为0然后是析构函数的实现CALCULATORCALCULATOR/析构函数主要完成对构造函数中所声明的QLINEEDIT、QPUSHBUTTON、QHBOXLAYOUT、QVBOXLAYOUT类的对象的回收工作(可以不定义析构函数,程序运行结束时会自动调用系统默认的析构函数)IFOPERATEEDITNULL/OPERATEEDITNULLDELETEOPERATEEDITIFZEROBUTTONNULLZEROBUTTONNULLDELETEZEROBUTTON根据前面对按键事件的分析,有数字输入键,运算操作符输入键和清屏键三种,故对每种事件的槽响应函数都只说明一种,其他依此类推。数字输入键响应槽函数,以按键“1”为例VOIDCALCULATORONEBUTTONPRESSIFINPUT2“0“/如果当前显示框为0INPUT2“1“/变0为1ELSE/如果当前显示框不为0INPUT2OPERATEEDITTEXTINPUT2APPENDTR“1“/在显示的数据后面追加1OPERATEEDITSETTEXTINPUT2/更新显示框中的显示信息运算操作符输入键响应槽函数,以按键“”为例VOIDCALCULATORADDBUTTONPRESSFLOATFIRST,SECONDINPUT2OPERATEEDITTEXT/把当前显示的数据保存到运算操作数2中IFOPERATE0/如果是第一次按下运算符键INPUT1INPUT2/把运算操作数2中的数据保存到运算操作数1中INPUT2“0“/清除运算操作数2中的数据OPERATE/把运算符键置ELSE/如果是第二次按下运算符键SECONDINPUT2TOFLOAT/把运算操作数2中的数据转化为浮点类型FIRSTINPUT1TOFLOAT/把运算操作数1中的数据转化为浮点类型SWITCHOPERATE/根据当前的运算符判断做何操作CASEFIRSTFIRSTSECONDBREAKCASEFIRSTFIRSTSECONDBREAKCASEFIRSTFIRSTSECONDBREAKCASE/FIRSTFIRST/SECONDBREAKINPUT1QSTRINGNUMBERFIRST,F,10/把运算的结果转化成为可以在显示框显示的类型INPUT2“0“/清除运算操作数2中的数据OPERATE/把运算符键置“”OPERATEEDITSETTEXTINPUT1/更新显示框中的显示内容清屏操作响应函数VOIDCALCULATORCLEARBUTTONPRESSINPUT2“0“/把运算操作数2清零INPUT1“0“/把运算操作数1清零OPERATEEDITSETTEXTINPUT2/更新显示框中的显示内容3对MAINCPP源代码的简要说明INCLUDE/包含应用程序类INCLUDE“CALCULATORH“/包含计算器类INTMAININTARGC,CHARARGV/MAIN函数的标准写法QAPPLICATIONAPPARGC,ARGV/创建一个QAPPLICATION对象,管理应用程序的资源CALCULATORMAINWINDOW/产生一个计算器对象MAINWINDOWSHOWMAXIMIZED/显示计算器窗体默认以最大化的形式显示RETURNAPP

温馨提示

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

最新文档

评论

0/150

提交评论