嵌入式qt实验报告简单计算器的设计Word文档格式.docx
《嵌入式qt实验报告简单计算器的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式qt实验报告简单计算器的设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
4、用模拟器调试运行。
2、带界面的计算器的设计:
与简单计算器的设计步骤基本相同。
但是需要在项目文件(后缀为.pro)添加一段代码,使得程序中能使用Qt脚本,在原有代码的基础上添加。
在头文件widget.h的Widget类添加共有槽函数和全局变量,以及包含头文件QtScript,以使用QtScriptAPI。
在源文件widget.cpp中添加新代码,之后即可运行调试。
三、实验结果分析及代码(包括结果描述、综合分析及实现关键代码)
实验结果如下:
1、简单计算器:
代码:
(1)在widget.h文件中
#ifndefWIDGET_H
#defineWIDGET_H
#include<
QWidget>
namespaceUi{
classWidget;
}
classWidget:
publicQWidget
{
Q_OBJECT
public:
explicitWidget(QWidget*parent=0);
~Widget();
privateslots:
voidon_doubleSpinBox_1_valueChanged();
voidon_doubleSpinBox_2_valueChanged();
voidon_doubleSpinBox_3_valueChanged();
voidon_doubleSpinBox_4_valueChanged();
voidon_doubleSpinBox_5_valueChanged();
voidon_doubleSpinBox_6_valueChanged();
voidon_doubleSpinBox_7_valueChanged();
voidon_doubleSpinBox_8_valueChanged();
private:
Ui:
:
Widget*ui;
};
#endif//WIDGET_H
(2)在widget.cpp源文件中
#include"
widget.h"
ui_widget.h"
Widget:
Widget(QWidget*parent):
QWidget(parent),
ui(newUi:
Widget)
ui->
setupUi(this);
voidWidget:
on_doubleSpinBox_1_valueChanged()
{
ui->
outout_plus->
setText(QString:
number(ui->
doubleSpinBox_1->
value()+ui->
doubleSpinBox_2->
value()));
on_doubleSpinBox_2_valueChanged()
on_doubleSpinBox_3_valueChanged()
outout_minus->
doubleSpinBox_3->
value()-ui->
doubleSpinBox_4->
}
on_doubleSpinBox_4_valueChanged()
on_doubleSpinBox_5_valueChanged()
outout_multi->
doubleSpinBox_5->
value()*ui->
doubleSpinBox_6->
on_doubleSpinBox_6_valueChanged()
voidWidget:
on_doubleSpinBox_7_valueChanged()
outout_div->
doubleSpinBox_7->
value()/ui->
doubleSpinBox_8->
on_doubleSpinBox_8_valueChanged()
~Widget()
deleteui;
2、带显示界面的计算器:
(1)在shiyanB.pro项目文件中
QT+=coregui
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中
QtScript>
QWidget"
QStringsum;
//全局变量。
publicslots:
voidclickNum1();
//按钮1的槽函数。
voidclickNum2();
//按钮2的槽函数。
voidclickNum3();
//按钮3的槽函数。
voidclickNum4();
//按钮4的槽函数。
voidclickNum5();
//按钮5的槽函数。
voidclickNum6();
//按钮6的槽函数。
voidclickNum7();
//按钮7的槽函数。
voidclickNum8();
//按钮8的槽函数。
voidclickNum9();
//按钮9的槽函数。
voidclickNum0();
//按钮0的槽函数。
voidclickPoint();
//按钮.的槽函数。
voidclickLbracket();
//按钮(的槽函数。
voidclickRbracket();
//按钮)的槽函数。
voidclickClean();
//按钮clean的槽函数。
voidclickDelete();
//按钮delete的槽函数。
voidclickPlus();
//按钮+的槽函数。
voidclickMinus();
//按钮-的槽函数。
voidclickMulti();
//按钮*的槽函数。
voidclickDiv();
//按钮/的槽函数。
voidclickEqul();
//按钮=的槽函数。
(3)在源文件widget.cpp中
sum="
"
;
connect(ui->
pushButton_1,SIGNAL(clicked()),this,SLOT(clickNum1()));
pushButton_2,SIGNAL(clicked()),this,SLOT(clickNum2()));
pushButton_3,SIGNAL(clicked()),this,SLOT(clickNum3()));
pushButton_4,SIGNAL(clicked()),this,SLOT(clickNum4()));
pushButton_5,SIGNAL(clicked()),this,SLOT(clickNum5()));
pushButton_6,SIGNAL(clicked()),this,SLOT(clickNum6()));
pushButton_7,SIGNAL(clicked()),this,SLOT(clickNum7()));
pushButton_8,SIGNAL(clicked()),this,SLOT(clickNum8()));
pushButton_9,SIGNAL(clicked()),this,SLOT(clickNum9()));
pushButton_0,SIGNAL(clicked()),this,SLOT(clickNum0()));
pushButton_point,SIGNAL(clicked()),this,SLOT(clickPoint()));
pushButton_lbracket,SIGNAL(clicked()),this,SLOT(clickLbracket()));
pushButton_rbracket,SIGNAL(clicked()),this,SLOT(clickRbracket()));
pushButton_clean,SIGNAL(clicked()),this,SLOT(clickClean()));
pushButton_delete,SIGNAL(clicked()),this,SLOT(clickDelete()));
pushButton_plus,SIGNAL(clicked()),this,SLOT(clickPlus()));
pushButton_minus,SIGNAL(clicked()),this,SLOT(clickMinus()));
pushButton_multi,SIGNAL(clicked()),this,SLOT(clickMulti()));
pushButton_div,SIGNAL(clicked()),this,SLOT(clickDiv()));
pushButton_equl,SIGNAL(clicked()),this,SLOT(clickEqul()));
clickNum1()//按钮1的槽函数。
QStringnum1="
1"
QStringstr=ui->
lineEdit->
text();
str=str+num1;
if(ui->
text()=="
0"
)
setText(num1);
else
setText(str);
clickNum2()//按钮2的槽函数。
2"
clickNum3()//按钮3的槽函数。
3"
clickNum4()//按钮4的槽函数。
4"
clickNum5()//按钮5的槽函数。
5"
clickNum6()//按钮6的槽函数。
6"
clickNum7()//按钮7的槽函数。
7"
clickNum8()//按钮8的槽函数。
8"
clickNum9()//按钮9的槽函数。
9"
clickNum0()//按钮0的槽函数。
clickPoint()//按钮point的槽函数。
."
QStringnum2="
0."
setText(num2);
clickLbracket()//按钮lbracket的槽函数。
("
clickRbracket()//按钮rbracket的槽函数。
)"
clickClean()//按钮clean的槽函数。
clickDelete()//按钮delete的槽函数。
QStringa="
if(str.length()==1)
setText(a);
elseif(str.length()>
1)
str=str.left(str.length()-1);
//从左边取长度减去1的字符串。
clickPlus()//按钮+的槽函数。
+"
sum=str+num1;
setText(sum);
clickMinus()//按钮-的槽函数。
-"
clickMulti()//按钮*的槽函数。
*"
clickDiv()//按钮/的槽函数。
/"
clickEqul()//按钮=的槽函数。
QScriptEngineengine;
//QScriptEngine类为程序提供一个嵌入式脚本环境,每一个引擎都是一个轻量级自包含的虚拟机。
QScriptValueresult=engine.evaluate(str);
//调用脚本引擎的evaluate()函数可以执行脚本,此处即可算出之前输入的字符串算式的结果。
setText(result.toString());
//调用QScriptValue类的toString()函数将QScriptValue类的执行结果转换成string型。
实验分析:
这两个小实验可以实现简单计算器的四则运算