利用qt creator进行简单功能计算机设计.docx
《利用qt creator进行简单功能计算机设计.docx》由会员分享,可在线阅读,更多相关《利用qt creator进行简单功能计算机设计.docx(21页珍藏版)》请在冰豆网上搜索。
![利用qt creator进行简单功能计算机设计.docx](https://file1.bdocx.com/fileroot1/2023-6/17/a440cd9a-6a9d-47c8-ad53-0c740019f931/a440cd9a-6a9d-47c8-ad53-0c740019f9311.gif)
利用qtcreator进行简单功能计算机设计
电子科技大学
学生实验报告书
课程名称实用嵌入式应用系统设计与实现
任课老师
学生姓名
学生学号
学生学院
2014—2015学年第2学期
实验项目名称
简单功能计算器的设计
实验日期
2015.3.27
一、实验内容描述(问题及要求的描述)
1.掌握简单功能计算器的设计方法
2.实验要求完成简单功能计算器的设计,要能够完成简单的四则运算,实时更新运算结果。
效果图如下:
二、实验步骤设计(包括实验方案设计、实验步骤等)
采用QtDesigner设计界面
实验步骤:
1.创建窗体。
创建一个QtGui应用的项目lesson_test_dialog_Designer,基类选择Qwidget。
双击界面文件widget.ui进入QtDesigner进行界面设计。
2.编辑对话框的控件属性、布局和Tab顺序。
3.编辑每个spinBox控件的槽函数,用于实现当spinBox的数值发生变化时,实时更新运算结果。
4.连接每个spinBox的数值改变信号和对应的槽函数。
窗体界面设计如下图:
三、实验结果分析(包括结果描述、综合分析)
实验结果:
1.界面显示:
2.当在两个输入上按下上下箭头输入好数字后,计算器自动进行四则运算,输出结果。
四、实验代码:
(1)返回项目树视图,在头文件widget.h的Widget类添加共有槽函数(在原有代码的基础上添加,划线标记部分为新添加的代码)。
添加的代码实现了信号和槽的自动关联
#ifndefWIDGET_H
#defineWIDGET_H
#include
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"
#include"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()));
}
voidWidget:
:
on_doubleSpinBox_2_valueChanged()
{
ui->outout_plus->setText(QString:
:
number(ui->doubleSpinBox_1->value()+ui->doubleSpinBox_2->value()));
}
voidWidget:
:
on_doubleSpinBox_3_valueChanged()
{
ui->outout_minus->setText(QString:
:
number(ui->doubleSpinBox_3->value()-ui->doubleSpinBox_4->value()));
}
voidWidget:
:
on_doubleSpinBox_4_valueChanged()
{
ui->outout_minus->setText(QString:
:
number(ui->doubleSpinBox_3->value()-ui->doubleSpinBox_4->value()));
}
voidWidget:
:
on_doubleSpinBox_5_valueChanged()
{
ui->outout_multi->setText(QString:
:
number(ui->doubleSpinBox_5->value()*ui->doubleSpinBox_6->value()));
}
voidWidget:
:
on_doubleSpinBox_6_valueChanged()
{
ui->outout_multi->setText(QString:
:
number(ui->doubleSpinBox_5->value()*ui->doubleSpinBox_6->value()));
}
voidWidget:
:
on_doubleSpinBox_7_valueChanged()
{
ui->outout_div->setText(QString:
:
number(ui->doubleSpinBox_7->value()/ui->doubleSpinBox_8->value()));
}
voidWidget:
:
on_doubleSpinBox_8_valueChanged()
{
ui->outout_div->setText(QString:
:
number(ui->doubleSpinBox_7->value()/ui->doubleSpinBox_8->value()));
}
Widget:
:
~Widget()
{
deleteui;
}
实验项目名称
带界面计算器的设计
实验日期
2015.4.3
一、实验内容描述(问题及要求的描述)
1.掌握带界面计算器的设计方法
2.实验要求完成带界面计算器的设计,要自带数字和功能按钮,能实现更多以及更灵活的设计功能。
效果图如下:
二、实验步骤设计(包括实验方案设计、实验步骤等)
采用QtDesigner设计界面
实验步骤:
1.编辑窗口控件。
2.编辑对话框的控件属性、布局和Tab顺序。
3.编辑每个Button控件的槽函数,用于实现每个Button控件在计算器中的具体功能。
4.连接每个Button控件的点击信号和对应的槽函数。
窗体界面设计如下图:
三、实验结果分析及代码(包括结果描述、综合分析)
实验结果:
1.界面显示:
2.当输入任何需要计算的式子后,按下等号,立即显示出结果。
3.点击delete删除掉最近输入的一个数字或符号。
4.点击clean,所有值清零。
四、实验代码
(1)使得程序中能使用Qt脚本(在原有代码的基础上添加,划线标记部分为新添加的代码):
QT+=coregui
QT+=script
TARGET=lesson_test_calculator_final
TEMPLATE=app
SOURCES+=main.cpp\
widget.cpp
HEADERS+=widget.h
FORMS+=widget.ui
(2)返回项目树视图,在头文件widget.h的Widget类添加共有槽函数和全局变量,以及包含头文件QtScript,以使用QtScriptAPI(在原有代码的基础上添加,划线标记部分为新添加的代码)。
#ifndefWIDGET_H
#defineWIDGET_H
#include
#include
namespaceUi
{
classWidget;
}
classWidget:
publicQWidget
{
Q_OBJECT
public:
QStringsum;//全局变量。
explicitWidget(QWidget*parent=0);
~Widget();
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();//按钮=的槽函数。
private:
Ui:
:
Widget*ui;
};
#endif//WIDGET_H
(3)在源文件widget.cpp中添加新代码(划线标记)。
#include"widget.h"
#include"ui_widget.h"
Widget:
:
Widget(QWidget*parent):
QWidget(parent),
ui(newUi:
:
Widget)
{
ui->setupUi(this);
sum="";
connect(ui->pushButton_1,SIGNAL(clicked()),this,SLOT(clickNum1()));
connect(ui->pushButton_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()));
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()),this,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(clickDelete()));
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,SIGNAL(clicked()),this,SLOT(clickEqul()));
}
voidWidget:
:
clickNum1()//按钮1的槽函数。
{
QStringnum1="1";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum1()//按钮1的槽函数。
{
QStringnum1="1";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum3()//按钮3的槽函数。
{
QStringnum1="3";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum4()//按钮4的槽函数。
{
QStringnum1="4";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum5()//按钮5的槽函数。
{
QStringnum1="5";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum6()//按钮6的槽函数。
{
QStringnum1="6";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum7()//按钮7的槽函数。
{
QStringnum1="7";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum8()//按钮8的槽函数。
{
QStringnum1="8";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum9()//按钮9的槽函数。
{
QStringnum1="9";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickNum0()//按钮0的槽函数。
{
QStringnum1="0";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickPoint()//按钮point的槽函数。
{
QStringnum1=".";
QStringnum2="0.";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num2);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickLbracket()//按钮lbracket的槽函数。
{
QStringnum1="(";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickRbracket()//按钮rbracket的槽函数。
{
QStringnum1=")";
QStringstr=ui->lineEdit->text();
str=str+num1;
if(ui->lineEdit->text()=="0")
{
ui->lineEdit->setText(num1);
}
else
{
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickClean()//按钮clean的槽函数。
{
QStringnum1="0";
ui->lineEdit->setText(num1);
}
voidWidget:
:
clickDelete()//按钮delete的槽函数。
{
QStringa="0";
QStringstr=ui->lineEdit->text();
if(str.length()==1)
{
ui->lineEdit->setText(a);
}
elseif(str.length()>1)
{
str=str.left(str.length()-1);//从左边取长度减去1的字符串。
ui->lineEdit->setText(str);
}
}
voidWidget:
:
clickPlus()//按钮+的槽函数。
{
QStringnum1="+";
QStringstr=ui->lineEdit->text();
sum=str+num1;
ui->lineEdit->setText(sum);
}
voidWidget:
:
clickMinus()//按钮-的槽函数。
{
QStringnum1="-";
QStringstr=ui->lineEdit->text();
sum=str+num1;
ui->lineEdit->setText(sum);
}
voidWidget:
:
clickMulti()//按钮*的槽函数。
{
QStringnum1="*";
QStringstr=ui->lineEdit->text();
sum=str+num1;
ui->lineEdit->setText(sum);
}
voidWidget:
:
clickDiv()