《嵌入式qt实验报告简单计算器的设计.pdf》由会员分享,可在线阅读,更多相关《嵌入式qt实验报告简单计算器的设计.pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 嵌入式 qt 实验报告简单计算器的设计 Last updated at 10:00 am on 25th December 2020 电 子 科 技 大 学 学 生 实 验 报 告 书 课 程 名 称 实用嵌入式应用系统设计与实现 任 课 老 师 实 验 名 称 简单功能计算器的设计 学 生 姓 名 学 生 学 号 学 生 学 院 2015 2016 学年 第 1 学期 实验项目名称 简单功能计算器的设计 实验日期 一、实验内容 1、设计一个简单计算器并能完成简单的四则运算,实时更新运算结果;2、带界面计算器自带数字及功能按钮,能实现更多以及更灵活的的计算功能。一、实验步骤设计(包括实验方案
2、设计、实验步骤或算法描述等)实验设计方案如下:图 1 简单计算器的设计方案流程 图 2 带显示界面计算器的设计方案流程 实验步骤:一、简单计算器的设计:1、创建一个 Qt GUI 应用项目,项目名称为 dialog_designer,基类选择 Qwidget。项目建好后会自动生成一系列文件,双击界面文件 widget.ui 进入 Qt Designer 进行界面设计。2、界面设计完成后修改控件的各属性,并修改 Tab 顺序,点击工具栏上的的“编辑 Tab 顺序”按钮,依次按顺序点击即可,完成后再按工具栏上的编辑控件按钮返回。3、在头文件 widget.h 的 Widget 类添加共有槽函数;在
3、源文件 widget.cpp 中添加新代码。4、用模拟器调试运行。二、带界面的计算器的设计:与简单计算器的设计步骤基本相同。但是需要在项目文件(后缀为.pro)添加一段代码,使得程序中能使用 Qt 脚本,在原有代码的基础上添加。在头文件widget.h 的 Widget 类添加共有槽函数和全局变量,以及包含头文件 QtScript,以使用 Qt Script API。在源文件 widget.cpp 中添加新代码,之后即可运行调试。三、实验结果分析及代码(包括结果描述、综合分析及实现关键代码)实验结果如下:1、简单计算器:代码:(1)在 widget.h 文件中#ifndef WIDGET_H#
4、define WIDGET_H#include namespace Ui class Widget;class Widget:public QWidget Q_OBJECT public:explicit Widget(QWidget*parent=0);Widget();private slots:void on_doubleSpinBox_1_valueChanged();void on_doubleSpinBox_2_valueChanged();void on_doubleSpinBox_3_valueChanged();void on_doubleSpinBox_4_valueCha
5、nged();void on_doubleSpinBox_5_valueChanged();void on_doubleSpinBox_6_valueChanged();void on_doubleSpinBox_7_valueChanged();void on_doubleSpinBox_8_valueChanged();private:Ui:Widget*ui;#endif/WIDGET_H(2)在 widget.cpp 源文件中#include widget.h#include ui_widget.h Widget:Widget(QWidget*parent):QWidget(paren
6、t),ui(new Ui:Widget)ui-setupUi(this);void Widget:on_doubleSpinBox_1_valueChanged()ui-outout_plus-setText(QString:number(ui-doubleSpinBox_1-value()+ui-doubleSpinBox_2-value();void Widget:on_doubleSpinBox_2_valueChanged()ui-outout_plus-setText(QString:number(ui-doubleSpinBox_1-value()+ui-doubleSpinBox
7、_2-value();void Widget:on_doubleSpinBox_3_valueChanged()ui-outout_minus-setText(QString:number(ui-doubleSpinBox_3-value()-ui-doubleSpinBox_4-value();void Widget:on_doubleSpinBox_4_valueChanged()ui-outout_minus-setText(QString:number(ui-doubleSpinBox_3-value()-ui-doubleSpinBox_4-value();void Widget:o
8、n_doubleSpinBox_5_valueChanged()ui-outout_multi-setText(QString:number(ui-doubleSpinBox_5-value()*ui-doubleSpinBox_6-value();void Widget:on_doubleSpinBox_6_valueChanged()ui-outout_multi-setText(QString:number(ui-doubleSpinBox_5-value()*ui-doubleSpinBox_6-value();void Widget:on_doubleSpinBox_7_valueC
9、hanged()ui-outout_div-setText(QString:number(ui-doubleSpinBox_7-value()/ui-doubleSpinBox_8-value();void Widget:on_doubleSpinBox_8_valueChanged()ui-outout_div-setText(QString:number(ui-doubleSpinBox_7-value()/ui-doubleSpinBox_8-value();Widget:Widget()delete ui;2、带显示界面的计算器:代码:(1)在 shiyanB.pro 项目文件中 QT
10、 +=core gui QT+=script greaterThan(QT_MAJOR_VERSION,4):QT+=widgets TARGET=shiyanB TEMPLATE=app SOURCES+=main.cpp widget.cpp HEADERS +=widget.h FORMS +=widget.ui(2)在头文件 widget.h 中#ifndef WIDGET_H#define WIDGET_H#include#include QWidget namespace Ui class Widget;class Widget:public QWidget Q_OBJECT pu
11、blic:QString sum;/全局变量。explicit Widget(QWidget*parent=0);Widget();public slots:void clickNum1();/按钮 1 的槽函数。void clickNum2();/按钮 2 的槽函数。void clickNum3();/按钮 3 的槽函数。void clickNum4();/按钮 4 的槽函数。void clickNum5();/按钮 5 的槽函数。void clickNum6();/按钮 6 的槽函数。void clickNum7();/按钮 7 的槽函数。void clickNum8();/按钮 8 的槽
12、函数。void clickNum9();/按钮 9 的槽函数。void clickNum0();/按钮 0 的槽函数。void clickPoint();/按钮.的槽函数。void clickLbracket();/按钮(的槽函数。void clickRbracket();/按钮)的槽函数。void clickClean();/按钮 clean 的槽函数。void clickDelete();/按钮 delete 的槽函数。void clickPlus();/按钮+的槽函数。void clickMinus();/按钮-的槽函数。void clickMulti();/按钮*的槽函数。void c
13、lickDiv();/按钮/的槽函数。void clickEqul();/按钮=的槽函数。private:Ui:Widget*ui;#endif/WIDGET_H(3)在源文件 widget.cpp 中#include widget.h#include ui_widget.h Widget:Widget(QWidget*parent):QWidget(parent),ui(new Ui:Widget)ui-setupUi(this);sum=;connect(ui-pushButton_1,SIGNAL(clicked(),this,SLOT(clickNum1();connect(ui-pu
14、shButton_2,SIGNAL(clicked(),this,SLOT(clickNum2();connect(ui-pushButton_3,SIGNAL(clicked(),this,SLOT(clickNum3();connect(ui-pushButton_4,SIGNAL(clicked(),this,SLOT(clickNum4();connect(ui-pushButton_5,SIGNAL(clicked(),this,SLOT(clickNum5();connect(ui-pushButton_6,SIGNAL(clicked(),this,SLOT(clickNum6(
15、);connect(ui-pushButton_7,SIGNAL(clicked(),this,SLOT(clickNum7();connect(ui-pushButton_8,SIGNAL(clicked(),this,SLOT(clickNum8();connect(ui-pushButton_9,SIGNAL(clicked(),this,SLOT(clickNum9();connect(ui-pushButton_0,SIGNAL(clicked(),this,SLOT(clickNum0();connect(ui-pushButton_point,SIGNAL(clicked(),t
16、his,SLOT(clickPoint();connect(ui-pushButton_lbracket,SIGNAL(clicked(),this,SLOT(clickLbracket();connect(ui-pushButton_rbracket,SIGNAL(clicked(),this,SLOT(clickRbracket();connect(ui-pushButton_clean,SIGNAL(clicked(),this,SLOT(clickClean();connect(ui-pushButton_delete,SIGNAL(clicked(),this,SLOT(clickD
17、elete();connect(ui-pushButton_plus,SIGNAL(clicked(),this,SLOT(clickPlus();connect(ui-pushButton_minus,SIGNAL(clicked(),this,SLOT(clickMinus();connect(ui-pushButton_multi,SIGNAL(clicked(),this,SLOT(clickMulti();connect(ui-pushButton_div,SIGNAL(clicked(),this,SLOT(clickDiv();connect(ui-pushButton_equl
18、,SIGNAL(clicked(),this,SLOT(clickEqul();void Widget:clickNum1()/按钮 1 的槽函数。QString num1=1;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum2()/按钮 2 的槽函数。QString num1=2;QString str=ui-lineEdit-text();str=str
19、+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum3()/按钮 3 的槽函数。QString num1=3;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum4()/按钮 4 的槽函数。QString
20、 num1=4;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum5()/按钮 5 的槽函数。QString num1=5;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(
21、str);void Widget:clickNum6()/按钮 6 的槽函数。QString num1=6;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum7()/按钮 7 的槽函数。QString num1=7;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-li
22、neEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum8()/按钮 8 的槽函数。QString num1=8;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum9()/按钮 9 的槽函数。QString num1=9;QString str=ui-lineEdit-tex
23、t();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickNum0()/按钮 0 的槽函数。QString num1=0;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickPoint()/按钮 po
24、int 的槽函数。QString num1=.;QString num2=0.;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num2);else ui-lineEdit-setText(str);void Widget:clickLbracket()/按钮 lbracket 的槽函数。QString num1=(;QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineE
25、dit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickRbracket()/按钮 rbracket 的槽函数。QString num1=);QString str=ui-lineEdit-text();str=str+num1;if(ui-lineEdit-text()=0)ui-lineEdit-setText(num1);else ui-lineEdit-setText(str);void Widget:clickClean()/按钮 clean 的槽函数。QString num1=0;ui-lineEdit-se
26、tText(num1);void Widget:clickDelete()/按钮 delete 的槽函数。QString a=0;QString str=ui-lineEdit-text();if(str.length()=1)ui-lineEdit-setText(a);else if(str.length()1)str=str.left(str.length()-1);/从左边取长度减去 1 的字符串。ui-lineEdit-setText(str);void Widget:clickPlus()/按钮+的槽函数。QString num1=+;QString str=ui-lineEdit
27、-text();sum=str+num1;ui-lineEdit-setText(sum);void Widget:clickMinus()/按钮-的槽函数。QString num1=-;QString str=ui-lineEdit-text();sum=str+num1;ui-lineEdit-setText(sum);void Widget:clickMulti()/按钮*的槽函数。QString num1=*;QString str=ui-lineEdit-text();sum=str+num1;ui-lineEdit-setText(sum);void Widget:clickDiv
28、()/按钮/的槽函数。QString num1=/;QString str=ui-lineEdit-text();sum=str+num1;ui-lineEdit-setText(sum);void Widget:clickEqul()/按钮=的槽函数。QString str=ui-lineEdit-text();QScriptEngine engine;/QScriptEngine 类为程序提供一个嵌入式脚本环境,每一个引擎都是一个轻量级自包含的虚拟机。QScriptValue result=engine.evaluate(str);/调用脚本引擎的 evaluate()函数可以执行脚本,此处即可算出之前输入的字符串算式的结果。ui-lineEdit-setText(result.toString();/调用 QScriptValue 类的 toString()函数将QScriptValue 类的执行结果转换成 string 型。Widget:Widget()delete ui;实验分析:这两个小实验可以实现简单计算器的四则运算功能。