您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 实验四-Qt编写简单的计算器
实验四Qt编写简单的计算器一、【实验目的】1)熟悉QtCreator的简单操作。2)了解Qt程序编写框架。3)了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。二、【实验内容】1)查看API手册,学习简单的Qt类的使用,如QLineEdit、QPushButton等。2)用QtCreator创建工程,用Qt编写计算器程序。3)对计算器程序进行移植。三、【实验步骤】1.创建工程1)打开QtCreator,如图1所示。图12)选择File-NewFileorProject,然后在弹出的对话框中选择OtherProject-EmptyQtproject(如图2所示),然后进入下一步。图23)定义新工程的工程名并选择保存路径(如图3所示),然后进入下一步。图34)选择Qt版本,这里选择使用Qt4.7.1,取消对QtinPATH的选择(如图4所示),然后进入下一步,完成新工程的创建(如图5所示)。图4图52.计算器程序的实现计算器程序主要分以下两部分工作:一是实现计算器的图形界面;二是实现按键事件和该事件对应的功能绑定,即信号和对应处理槽函数的绑定。1)计算器图形界面的实现通过分析计算器的功能我们可知,需要16个按键和一个显示框,同时考虑到整体的排布,还需要水平布局器和垂直布局器。通过组织这些类我们可以实现一个简单的带有数字0~9,可以进行简单四则运算且具有清屏功能的计算器。对于这些类的具体操作会在后面的代码中详细说明。2)信号和对应槽函数的绑定分析计算器的按键我们可以把按键事件分为以下三类,一是简单的数字按键,主要进行数字的录入,这类按键包括按键0~9;二是运算操作键,用于输入数学运算符号,进行数学运算和结果的显示,这类按键包括“+”,“-”,“*”,“/”,“=”;三是清屏操作键,用于显示框显示信息的清除。3)进入刚才创建的空工程,双击左侧的Calculator.pro,在主编辑框中目前显示Calculator.pro的内容为空,如图6所示。这是因为目前什么文件都没有添加的缘故。图64)添加文件calculator.h在工程Calculator上面点击右键,然后点击AddNew,选择添加C++HeaderFile(如图7所示),进入下一步后输入文件名calculator.h(如图8所示),然后完成文件的添加。图7图85)添加文件calculator.cpp和main.cpp与添加文件calculator.h的过程类似,只是在选择文件类型时选择为C++SourceFile。完成后可以查看Calculator.pro文件的内容,整个工程的文件结构如图9所示。图93.计算器程序源代码的分析说明1)对calculator.h源代码的简要说明#ifndefCALCULATOR_H#defineCALCULATOR_H//对calculator.h头文件的声明#includeQWidget//包含主窗体类#includeQPushButton//包含按键类#includeQVBoxLayout//包含垂直布局器类#includeQHBoxLayout//包含水平布局器类#includeQLineEdit//包含显示框类classCalculator:publicQWidget//计算器继承自主窗体类{Q_OBJECT//必须加上这句,如果要调用信号,槽函数的操作的话public:Calculator();//计算器类的构造函数~Calculator();//计算器类的析构函数publicslots://定义各个按键按下后对应操作处理的槽函数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;//声明垂直布局器,该布局器主要对主窗体上面的空间进行排布QStringinput1;//计算器第一个运算操作数QStringinput2;//计算器第二个运算操作数charoperate;//运算符};#endif//CALCULATOR_H2)对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
本文标题:实验四-Qt编写简单的计算器
链接地址:https://www.777doc.com/doc-6522534 .html