嵌入式qt实验报告简单计算器的设计Word文件下载.docx
《嵌入式qt实验报告简单计算器的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式qt实验报告简单计算器的设计Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
在头文件
widget.h的Widget类添加共有槽函数和全局变量,以及包含头文件QtScript,以
使用QtScriptAPI。
在源文件widget.cpp中添加新代码,之后即可运行调试。
三、实验结果分析及代码(包括结果描述、综合分析及实现关键代码)
实验结果如下:
1、简单计算器:
代码:
(1)在widget.h文件中
#ifndefWIDGET_H
#defineWIDGET_H
#include<
QWidget>
namespaceji{
classWidget;
classWidget:
publicQWidget
{
Q_OBJECT
public:
explicitWidget(QWidget*parent=0);
~Widge();
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:
WidgetQWidget*parent):
QWidget(parent),
ui(newUi:
Widget)
ui->
setupUi(this);
}
voidWidget:
on_doubleSpinBox_1_valueChanged()ui->
outout_plu&
>
setTextQString:
number(ji->
doubleSpinBox_1>
value()+ui->
doubleSpinBox_2>
value()));
on_doubleSpinBox_2_valueChanged()
on_doubleSpinBox_3_valueChanged()
outout_minu&
setText(QString:
doubleSpinBox_3>
value()-ui->
doubleSpinBox_4>
on_doubleSpinBox_4_valueChanged()
on_doubleSpinBox_5_valueChanged()
outout_multi->
setText(QString:
numberQi->
doubleSpinBox_5>
value()*ui->
doubleSpinBox_6>
on_doubleSpinBox_6_valueChanged()
on_doubleSpinBox_7_valueChanged()
outout_div->
number(ji->
doubleSpinBox_7>
value()/
doubleSpinBox_8>
on_doubleSpinBox_8_valueChanged()
outout_div->
doubleSpinBox_7>
value()/ui->
~Widget()
deleteui;
2、带显示界面的计算器:
(1)在shiyanB.pro项目文件中
QT
+=coregui
QT+=scriptgreaterThanQT_MAJOR_VERSION,4):
QT+=widgetsTARGET=shiyanB
TEMPLATE=app
SOURCES+=
widget.cpp
HEADERS+=widget.h
FORMS+=widget.ui
(2)在头文件widget.h中
QtScript>
QWidget"
。
報HS旨9w«
F()9EnN>
loopo>
。
報Hs旨9w«
FogEnEoopo>
報Hs旨寸w«
10寸EnEoopo>
報Hs旨0w«
FoeEnEoopo>
報Hs旨CXIw«
FOCXIEnEoopo>
報Hs旨Lw«
F()LEnN>
so-s0一-qnd
Q①6p一m〜sHluped*a)6p一MO¥
6P一m10一dx①。
*超阻则1wns6£
」co0o一-qnd_LO山畐010
a)6p一Moo-qnd-a)6p一Msseo
护八!
」d=//!
()|nb3>
|0!
|0pjOA
嫌国辭阴/®
$f//乂)八!
CPP!
QP!
OA//!
()nin|AI>
|O!
PP!
OA。
嫌国辭阴-册第//!
()snui|Al>
嫌国辭阴+册第//!
()sn|d>
嫌国辭阴o记|即//!
()8^|8a>
OA
0^®
aWUB8l°
//()ue8|9>
ppjOA
嫌国辭阴(册第/Z()i8>
|oejq^>
ppjOA//:
()妙paicn>
P!
QPjOA〃伽!
0押旧P!
嫌国辭阴0//!
()omnN>
PPjOA
嫌国辭阴6//!
()6innN>
嫌国辭阴8//!
()8innN>
嫌国制明L//!
()ZiunN>
};
(3)在源文件widget.cpp中
#inelude"
sum="
"
;
connect(ii->
pushButton_1,SIGNAL(clicked())this,SLOT(clickNum1()));
connect(ji->
pushButton_2SIGNAL(clicked())this,SLOT(clickNum2()));
pushButton_3SIGNAL(clicked())this,SLOT(clickNum3()));
connect(ui->
pushButton_4SIGNAL(clicked())this,SLOT(clickNum4()));
pushButton_5SIGNAL(clicked())this,SLOT(clickNum5()));
pushButton_6SIGNAL(clicked())this,SLOT(clickNum6()));
connect©
i->
pushButton_7SIGNAL(clicked())this,SLOT(clickNum7()));
pushButton_8SIGNAL(clicked())this,SLOT(clickNum8()));
pushButton_9SIGNAL(clicked())this,SLOT(clickNum9()));
pushButton_0SIGNAL(clicked())this,SLOT(clickNumO()));
pushButton_point,SIGNAL(clicked())this,SLOT(clickPoint()));
pushButton_lbracketSIGNAL(clicked())this,SLOT(clickLbracket()));
pushButton_rbracketSIGNAL(clicked())this,SLOT(clickRbracket()));
pushButton_cleanSIGNAL(clicked())this,SLOT(clickClean()));
pushButton_deleteSIGNAL(clicked())this,SLOT(clickDelete()));
pushButton_plusSIGNAL(clicked())this,SLOT(clickPlus()));
connect(ui->
pushButton_minusSIGNAL(clicked())this,SLOT(clickMinus()));
pushButton_multi,SIGNAL(clicked())this,SLOT(clickMulti()));
connect(ji->
pushButton_div,SIGNAL(clicked())this,SLOT(clickDiv()));
connectJi->
pushButton_eqjJSIGNAL(clicked())this,SLOT(clickEqul()));
clickNum1()〃按钮1的槽函数。
QStringnum1="
1"
QStringstr=ui->
lineEdit->
text();
str=st叶numl;
if(ui->
text()=="
O"
)
lineEdit->
setText(numl);
else
setText(str);
clickNum2()〃按钮2的槽函数。
QStringnum仁"
2"
QStringstr=ui->
str=str+num1;
clickNum3()〃按钮3的槽函数。
3"
str=st叶num1;
lineEdit->
clickNum4()〃按钮4的槽函数。
4"
setText(numl);
clickNum5()〃按钮5的槽函数。
5"
setText(num1);
clickNum6()〃按钮6的槽函数。
6"
clickNum7()〃按钮7的槽函数。
7"
clickNum8()〃按钮8的槽函数。
8"
clickNum9()〃按钮9的槽函数。
9"
clickNumO()〃按钮0的槽函数。
0"
clickPoint()〃按钮point的槽函数。
{
."
QStringnum2="
0."
setText(num2);
clickLbracket()〃按钮Ibracket的槽函数。
(”;
ols)x①匕①s八丄一p山①u=A'
n
-(LLUnu)x①匕①s八丄一p山①u=A'
(=0=HH01X①A&
P山①u=2n)七
=lunu+」lsH」ls
ox①A&
P山①u=A.'
nH」ls6UWS0
r(・llLEnu6£
」cn0
報Hs旨0)>
pe」q」w«
M)a)>
pe」qM>
loo匸①6p一mpo>
(x()£
6u£
」1s)七①S05
=e)x①_LO)SA£
P山①u=A'
(uH()£
6ugs)±
nH」ls6UWSO
-b.lle6UWSO
報Hs旨①a)a)pw«
二¥
0)0)900匸①6p一Mpo>
zallLEnu6UUC6O
clickPlus()〃按钮+的槽函数。
+"
sum=str+num1;
setText(sum);
clickMinus()〃按钮-的槽函数。
-"
clickMulti()//按钮*的槽函数。
QStringnum1="
*"
clickDiv()//按钮/的槽函数。
/"
clickEqul()〃按钮=的槽函数。
QScriptEngineengine;
//QScriptEngine类为程序提供一个嵌入式脚本环境,每一个引擎都是一个轻量级自包含的虚拟机。
QScriptValueresult=engine.evaluate(str);
调用脚本引擎的evaluate(函数可以执行脚本,此处即可算出之前输入的字符串算式的结果。
lineEdit->
setText(result.toString())//调用QScriptValue类的toString()函数将QScriptValue类的执行结果转换成string型。
实验分析:
这两个小实验可以实现简单计算器的四则运算功能