嵌入式系统之基于QT的简单计算器

合集下载

基于Qt的计算器设计

基于Qt的计算器设计

衡阳师范学院嵌入式系统课程设计题目:基于Qt的计算器设计作者姓名:陈明慧、龚秋弘、宋素梅、关妹学号:所在院系:计算机学院专业:计算机科学与技术(师范)指导老师:***2018年7月目录摘要 (3)一、总体设计方案 (4)二、功能模块 (5)1. 基本计算功能: (5)2. 辅助功能 (5)3. 数字存储 (5)三.详细设计: (6)1. 基本计算功能: (6)2. 辅助功能 (9)三、功能验证及运行结果 (12)3.1基本加减乘除: (12)3.2复杂操作 (14)四、总结: (15)五、参考资料: (15)基于Qt的计算器设计摘要当今社会是信息社会,科技经济高速发展的社会,为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。

然而,电脑已经成为当代人生活的必需品,运行在电脑上的计算器成为了人们的生活学习绝佳伴侣。

本设计是用C++编写的,基于Qt图形用户界面应用程序框架的计算器,并实现了一定的计算功能。

关键字:Qt C++ 计算器一、总体设计方案1.目标:基于Qt用C++编写计算器程序,仿照window7计算器,实现两数加减乘除,平方,倒数,开方运算。

2.运行环境:编写环境:Qt 5.3.0 windows64位Exe 运行:windows 103.功能描述:a.基于Qt设计计算器的ui界面。

b.编写的应用程序实现如下功能:(1)加减乘除,平方,倒数,开方(2)存储和显示之前的运行结果(3)实现清屏,退格,退出应用程序的功能c. 应用程序为exe工程建立:文件->新建文件和工程->QtwidgetsApplication包含mainwindow.uid. ui界面设计: 在QT设计器中布置好计算器界面,所有按键采用pushButton控件,显示计算结果采用的是BrowerEdit控件。

完成的界面如下图所示:二、功能模块1. 基本计算功能:1.导数运算:btnReciprocal()2.开平方运算:btnSqrtSlot()3.取反运算:btnNegateSlot()4.基本加减乘除及百分号运算:btnEquSlot()2. 辅助功能1.显示框初始化setExp()2.复位btnClearSlot()3.删除当前框里的运算数:btnClearErrorSlot()4. 退格btnBackSLot()3. 数字存储1.内存清零btnMemoryClearSlot()2.读内存btnMemoryReadSlot()3.保存内存btnMemorySaveSlot()4.累加和累减btnMemoryAddSlot()和btnMemorySubSlot()三.详细设计:1. 基本计算功能:1.导数运算:btnReciprocal()1void MainWindow::btnReciprocal()2{3if(!cur.isEmpty())4stk.push(cur);5exp="1/"+stk.top();6bool ok;7qreal t2=stk.top().toDouble(&ok);8qint64t1=stk.top().toLongLong(&ok);9stk.pop();10QString res;11if(ok)res=QString::number(double(1/(1.0*t1))); 12else res=QString::number(double(1/t2));13stk.push(res);14cur="";15showNumber(exp,res);16}2.开平方运算:btnSqrtSlot()3.取反运算:btnNegateSlot()4.基本加减乘除及百分号运算:btnEquSlot()2. 辅助功能1.显示框初始化setExp()2.复位btnClearSlot()3.删除当前框里的运算数:btnClearErrorSlot()4. 退格btnBackSLot()3. 数字存储1.内存清零btnMemoryClearSlot()2.读内存btnMemoryReadSlot()3.保存内存btnMemorySaveSlot()4.累加和累减btnMemoryAddSlot()和btnMemorySubSlot() //累加三、功能验证及运行结果3.1基本加减乘除:3.1.1加法3.1.2减法3.1.3乘法3.1.4除法除数为零时:除数非零时:3.1.5 %操作3.2复杂操作3.2.1倒数运算3.2.2开平方操作四、总结:1.通过计算器设计,我学到了利用Qt设计简单窗口应用程序的的方法,初步了解了使用QT工具编写窗口程序的新颖,了解了槽和信号等基本知识,学会了如何使用新工具(Qt)帮助程序开发。

Qt实现计算器

Qt实现计算器
public:
myWidget(){
Q1="0";
Q2="0";
Q3="0";
c=' ';
this->setMinimumSize(300,290);
this->setMaximumSize(300,290);
QWidget *editwindow=new QWidget(this);//编辑窗口
editwindow->setGeometry(40,20,220,50);
{
if(Q2=="0") Q2="2";
else
{
Q2=lineEdit->text();
Q2.append('2');
}
lineEdit->setText(Q2);
}
void s3()
{
if(Q2=="0") Q2="3";
else
{
Q2=lineEdit->text();
Q2.append('3');
lineEdit=new QLineEdit("欢迎使用就算器",editwindow);//显示输入框
lineEdit->setGeometry(0,0,220,50);
lineEdit->setReadOnly(1);//设置为只读,不允许直接修改文本框
QWidget *buttonwindow=new QWidget(this);
connect(b7,SIGNAL(clicked()),this,SLOT(s7()));

任务5:基于QT的计算器设计

任务5:基于QT的计算器设计
码:(5、6、7、8、9、0几个键可自行增加)
一:计算器设计
一:计算器设计
6、CLR键增加click信号,对应slot的代码如下:
ui->m_x->setText(“”); ui->m_y->setText(“”); ui->m_result-setText(“”); 7、EXIT键增加click信号,对应slot的代码如下: Close(); 8、按运行键,即可实现相应的功能。
二:编译ARM版本的程序
1、在Projectsr Build Settings中选择Embedded
Qt4.。
如下图所示。
二:编译ARM版本的程序
2、传至实训台中运行。
END
所示。
一:计算器设计
1、
一:计算器设计
3、在等于按键上增加click槽,代码如下:
一:计算器设计
4、在m_x,m_y二个框中,增加lostFocus()槽,在增加代码
前,先定义全局bool型变量x_selected和y_selected,再增 加如下代码:
一:计算器设计
5、在每个数字按键上增加click槽,分别增加如下代
任务5:基于QT的计算器设计
主要内容
计算器设计 编译ARM版本的程序
一:计算器设计
1、新建项目
2、在新建的项目中,根据屏幕尺寸(800×480),
设定Forms的大小,然后根据下图把各个控件加入,
第一个输入框是QLineEdit,第二个也是输入框是 QLineEdit,第三个也是输入框是QLineEdit,对象 名称分别为m_x,m_y,m_result。“+”为Label, 其余的均为QPushButton,类和对象名分别如下图

嵌入式系统之基于QT的简单计算器

嵌入式系统之基于QT的简单计算器

嵌入式系统之基于Q T的简单计算器The pony was revised in January 2021嵌入式系统课程设计报告题目:基于QT的简单计算器专业:计算机科学与技术班级:姓名:学号:指导老师:日期:2012-12-26第一章前言设计背景计算器(calculator;counter)一般是指“电子计算器”,计算器是能进行数学运算的手持机器,拥有集成电路芯片,其结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑)。

计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,虽然功能较单一,但因其操作模式的方便快捷和价格的低廉,携带方便等特点,已经被广泛应用于工程、学习、商业贸易等日常生活中,极大的方便了人们对于数字的整合运算,成为人们生活和办公中的必备品之一,深得使用者的青睐。

设计目的本程序是基于linux下的嵌入式开发,所用软件为QT Creator,程序虽然简单,但是通过本程序的设计,可以进一步了解嵌入式系统开发工具以及熟悉linux环境下的常用命令,为以后进入嵌入式领域打下一定的基础。

通过该计算器程序软件的设计,培养独立思考、综合运用所学有关相应知识的能力,更好地巩固《C++程序语言设计》和《高级程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,体验理论与实践相结合的过程。

第二章功能需求分析功能描述本次设计的计算器在功能上大致与Windows系统自带的计算器程序相似,对于所设计的科学计算器,其功能大致为可以进行加(+)、减(-)、乘(*)、除(/)、简单算术计算。

由于接触QT时间还不太久,所以目前只能简单地实现这些功能,相信随着以后逐步的了解,本程序将实现更多的功能。

第三章开发工具简介QT简介由于本次设计的小程序是用QT Creator所设计的,所以我觉得有必要先介绍下QT 开发工具的背景。

Qt是一个1991年由奇趣科技开发的跨平台C++图形界面应用程序开发框架。

C++基于Qt图形库的简易计算器程序

C++基于Qt图形库的简易计算器程序

Calculate.cpp 文件
/************************************************************ APP : 四则运算计算器 Author : Input : NULL Output : NULL Date : 2015/04/16 ************************************************************/
button_add = new QPushButton(this); button_add->setText(tr("+")); button_add->setFont(_font); button_add->setGeometry(228,50,50,40); QObject::connect(button_add,SIGNAL(clicked()),this,SLOT(click_add())); button_4 = new QPushButton(this); button_4->setText(tr("4")); button_4->setFont(_font); button_4->setGeometry(6,114,50,40); QObject::connect(button_4,SIGNAL(clicked()),this,SLOT(click_4())); button_5 = new QPushButton(this); button_5->setText(tr("5")); button_5->setFont(_font); button_5->setGeometry(80,114,50,40); QObject::connect(button_5,SIGNAL(clicked()),this,SLOT(click_5())); button_6 = new QPushButton(this); button_6->setText(tr("6")); button_6->setFont(_font); button_6->setGeometry(154,114,50,40); QObject::connect(button_6,SIGNAL(clicked()),this,SLOT(click_6())); button_sub = new QPushButton(this); button_sub->setText(tr("-")); button_sub->setFont(_font); button_sub->setGeometry(228,114,50,40); QObject::connect(button_sub,SIGNAL(clicked()),this,SLOT(click_sub())); button_7 = new QPushButton(this); button_7->setText(tr("7")); button_7->setFont(_font); button_7->setGeometry(6,178,50,40); QObject::connect(button_7,SIGNAL(clicked()),this,SLOT(click_7())); button_8 = new QPushButton(this); button_8->setText(tr("8")); button_8->setFont(_font); button_8->setGeometry(80,178,50,40); QObject::connect(button_8,SIGNAL(clicked()),this,SLOT(click_8())); button_9 = new QPushButton(this); button_9->setText(tr("9"));

嵌入式系统之基于QT的简单计算器

嵌入式系统之基于QT的简单计算器

嵌入式系统之基于QT的简单计算器QT是一种跨平台的应用程序开发框架,它提供了一种编写图形用户界面(GUI)程序的简便方法。

在嵌入式系统中,使用QT可以快速开发出各种功能强大、界面友好的应用程序。

对于一个简单计算器来说,主要包括用户界面设计和计算逻辑两部分。

首先,我们需要设计一个界面来展示计算器的按钮和显示结果的区域。

在QT中,可以使用QGridLayout布局管理器来创建按钮布局,同时将其连接到对应的信号槽函数上,以实现按钮的点击响应。

```cpp//main.qmlimport QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Controls 2.12Windowvisible: truewidth: 400height: 600title: "Simple Calculator"RowLayoutspacing: 10GridLayoutid: buttonGridrows: 4columns: 4anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter Buttontext: "7"onClicked: calculator.append("7")}Buttontext: "8"onClicked: calculator.append("8")}// ... more buttons ...Buttontext: "="onClicked: calculator.calculate}// ... more buttons ...}TextFieldid: resultFieldwidth: 200height: 50placeholderText: "0"readOnly: true}}```在这个示例中,我们使用了QT的QML语言来创建用户界面。

任务5基于QT的计算器设计

任务5基于QT的计算器设计

任务5基于QT的计算器设计计算器一直以来都是人们日常生活中不可或缺的工具之一、在计算器的设计中,我们既要考虑到功能的实现,也要注重用户界面的友好性和操作的便捷性。

而QT作为一种跨平台的GUI应用框架,提供了丰富的工具和组件,使得计算器的开发变得更加方便和快捷。

在设计基于QT的计算器时,需要分析要实现的功能,确定用户界面的布局和组件的选择。

下面将详细介绍如何使用QT设计一个功能完备、外观美观的计算器。

首先需要确定计算器的基本功能,如四则运算、括号运算、正负数运算等。

然后进行界面布局的设计。

QT提供了丰富的布局管理器,可以根据实际需要选择合适的布局方式。

在计算器设计中,通常使用的是网格布局,方便将按钮等组件进行排列。

在QT中,可以使用QPushButton组件来作为计算器的按钮,使用QLineEdit组件来显示计算结果。

另外,几个常用的功能按钮,如清除按钮、等号按钮等,可以直接使用QT提供的控件。

每个按钮通过信号和槽机制与计算器的功能函数进行连接,实现对应的功能。

接下来我们开始设计计算器的主界面。

打开QT Creator,选择创建新的QT Widgets应用程序项目。

在UI设计器中拖拽QPushButton组件来作为计算器的数字按钮,将QLineEdit组件作为计算结果显示框。

然后使用网格布局将这些按钮和显示框进行排列。

先设计一个简单的计算器,支持四则运算和正负数运算功能。

在UI 设计器中布局好按钮后,设置每个按钮的文本为对应的数字或符号,并将它们的槽函数与计算器实现的相应函数进行连接。

在计算器实现中,可以使用QStack来实现对括号的匹配和计算的过程。

对于四则运算,可以使用逆波兰表达式来实现,即将中缀表达式转换为后缀表达式,然后再进行求值。

在计算器类中,可以设计一个函数来将用户输入的表达式转换为逆波兰表达式,再利用栈来进行求值。

对于括号运算,可以使用递归的方式来实现。

首先找到最内层的括号,将它们的值计算出来,然后将计算结果替换成新的表达式,再进行下一轮的计算,直到没有括号为止。

qt编程简单的计算器

qt编程简单的计算器

QT编程实现简易的计算器一、实验目的1) 熟悉QtCreator的简单操作。

2) 了解Qt程序编写框架。

3) 了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。

二、实验内容1) 查看API手册,学习简单的Qt类的使用,如QLineEdit、QPushButton等。

2) 用QtCreator创建工程,用Qt编写计算器程序。

3) 对计算器程序进行移植。

三、实验步骤1. 创建工程1) 打开QtCreator,如图1所示。

选择File->New File or Project,然后在弹出的对话框中选择Other Project->Empty Qt project (如图2所示),然后进入下一步。

选择Qt版本,这里选择使用Qt4.7.1,取消对Qt in PA TH的选择(如图4所示),然后进入下一步,完成新工程的创建(如图5所示)。

实现代码Calcuulator.h代码:#ifndef CALCULATOR_H#define CALCULATOR_H#include<QApplication>#include<QDialog>#include<QPushButton>#include<QLineEdit>class Calculator:public QDialog {Q_OBJECT protected:QLineEdit *lineEditor; QPushButton *button_0; QPushButton *button_1; QPushButton *button_2; QPushButton *button_3; QPushButton *button_4; QPushButton *button_5; QPushButton *button_6; QPushButton *button_7; QPushButton *button_8; QPushButton *button_9; QPushButton *button_ce; QPushButton *button_jia; QPushButton *button_jian; QPushButton *button_cheng; QPushButton *button_chu; QPushButton *button__; QPushButton *button_dengyu; int num1,num2,result; // bool zhenghao; //int mark; //char fuhao; //QString S; //public:Calculator();private slots:void button_0_clicked();void button_1_clicked();void button_2_clicked();void button_3_clicked();void button_4_clicked();void button_5_clicked();void button_6_clicked();void button_7_clicked();void button_8_clicked();void button_9_clicked();void button_ce_clicked();void button_jia_clicked();void button_jian_clicked();void button_cheng_clicked();void button_chu_clicked();void button__clicked();void button_dengyu_clicked(); };#endif // CALCULATOR_HCalculator.cpp代码:#include<QLayout>#include<QHBoxLayout>#include<QVBoxLayout>#include<QLineEdit>#include<cmath>#include"calculator.h"Calculator::Calculator(){num1=0;num2=0;result=0;zhenghao=true;mark=1;lineEditor=new QLineEdit("0");S="";button_0=new QPushButton("0");button_1=new QPushButton("1");button_2=new QPushButton("2");button_3=new QPushButton("3");button_4=new QPushButton("4");button_5=new QPushButton("5"); button_6=new QPushButton("6"); button_7=new QPushButton("7"); button_8=new QPushButton("8"); button_9=new QPushButton("9"); button_ce=new QPushButton("CE"); button_cheng=new QPushButton("*"); button_jia=new QPushButton("+"); button_jian=new QPushButton("-"); button_chu=new QPushButton("/"); button__=new QPushButton("+/-"); button_dengyu=new QPushButton("="); QHBoxLayout *Hl1=new QHBoxLayout; QHBoxLayout *Hl2=new QHBoxLayout; QHBoxLayout *Hl3=new QHBoxLayout; QHBoxLayout *Hl4=new QHBoxLayout; QHBoxLayout *Hl5=new QHBoxLayout; Hl1->addWidget(lineEditor);Hl1->addWidget(button_ce);Hl2->addWidget(button_1);Hl2->addWidget(button_2);Hl2->addWidget(button_3);Hl2->addWidget(button_jia);Hl3->addWidget(button_4);Hl3->addWidget(button_5);Hl3->addWidget(button_6);Hl3->addWidget(button_jian);Hl4->addWidget(button_7);Hl4->addWidget(button_8);Hl4->addWidget(button_9);Hl4->addWidget(button_cheng);Hl5->addWidget(button__);Hl5->addWidget(button_0);Hl5->addWidget(button_dengyu);Hl5->addWidget(button_chu);QVBoxLayout *V1=new QVBoxLayout;V1->addLayout(Hl1);V1->addLayout(Hl2);V1->addLayout(Hl3);V1->addLayout(Hl4);V1->addLayout(Hl5);connect(button_0,SIGNAL(clicked()),this,SLOT(button_0_clicked())); connect(button_1,SIGNAL(clicked()),this,SLOT(button_1_clicked())); connect(button_2,SIGNAL(clicked()),this,SLOT(button_2_clicked()));connect(button_3,SIGNAL(clicked()),this,SLOT(button_3_clicked()));connect(button_4,SIGNAL(clicked()),this,SLOT(button_4_clicked()));connect(button_5,SIGNAL(clicked()),this,SLOT(button_5_clicked()));connect(button_6,SIGNAL(clicked()),this,SLOT(button_6_clicked()));connect(button_7,SIGNAL(clicked()),this,SLOT(button_7_clicked()));connect(button_8,SIGNAL(clicked()),this,SLOT(button_8_clicked()));connect(button_9,SIGNAL(clicked()),this,SLOT(button_9_clicked()));connect(button_jia,SIGNAL(clicked()),this,SLOT(button_jia_clicked()));connect(button_jian,SIGNAL(clicked()),this,SLOT(button_jian_clicked()));connect(button_cheng,SIGNAL(clicked()),this,SLOT(button_cheng_clicked()));connect(button_chu,SIGNAL(clicked()),this,SLOT(button_chu_clicked()));connect(button_dengyu,SIGNAL(clicked()),this,SLOT(button_dengyu_clicked()));connect(button_ce,SIGNAL(clicked()),this,SLOT(button_ce_clicked()));connect(button__,SIGNAL(clicked()),this,SLOT(button__clicked()));setLayout(V1);}void Calculator::button_0_clicked(){S+="0";lineEditor->setText(S);if(mark==1){num1=num1*10+0;}else{num2=num2*10;}}void Calculator::button_1_clicked(){ S+="1";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+1;}else{num1=num1*10-1;}}else{if(zhenghao){num2=num2*10+1;}else{num2=num2*10-1;}}}void Calculator::button_2_clicked(){lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+2;}else{num1=num1*10-2;}}else{if(zhenghao){num2=num2*10+2;}else{num2=num2*10-2;}}}void Calculator::button_3_clicked(){ S+="3";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+3;num1=num1*10-3;}}else{if(zhenghao){num2=num2*10+3;}else{num2=num2*10-3;}}}void Calculator::button_4_clicked(){ S+="4";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+4;}else{num1=num1*10-4;}}else{if(zhenghao){num2=num2*10+4;}else{num2=num2*10-4;}}}void Calculator::button_5_clicked(){ S+="5";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+5;}else{num1=num1*10-5;}}else{if(zhenghao){num2=num2*10+5;}else{num2=num2*10-5;}}}void Calculator::button_6_clicked(){ S+="6";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+6;}else{num1=num1*10-6;}}else{if(zhenghao){num2=num2*10+6;}else{num2=num2*10-6;}}}void Calculator::button_7_clicked(){ S+="7";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+7;}else{num1=num1*10-7;}}else{if(zhenghao){num2=num2*10+7;}else{num2=num2*10-7;}}}void Calculator::button_8_clicked(){ S+="8";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+8;}else{num1=num1*10-8;}if(zhenghao){num2=num2*10+8;}else{num2=num2*10-8;}}}void Calculator::button_9_clicked(){ S+="9";lineEditor->setText(S);if(mark==1){if(zhenghao){num1=num1*10+9;}else{num1=num1*10-9;}}else{if(zhenghao){num2=num2*10+9;}else{num2=num2*10-9;}}void Calculator::button_jia_clicked(){ S+="+";lineEditor->setText(S);zhenghao=true;fuhao='+';mark=2;}void Calculator::button_jian_clicked(){ S+="-";lineEditor->setText(S);zhenghao=true;fuhao='-';mark=2;}void Calculator::button_cheng_clicked(){ S+="*";lineEditor->setText(S);zhenghao=true;fuhao='*';}void Calculator::button_chu_clicked(){S+="/";lineEditor->setText(S);zhenghao=true;fuhao='/';mark=2;}void Calculator::button__clicked(){S+="-";lineEditor->setText(S);zhenghao=false;}void Calculator::button_dengyu_clicked(){ S+="=";// lineEditor->setText(S);switch(fuhao){case '+':result=num1+num2;break;case '-':result=num1-num2;break;case '*':result=num1*num2;break;case '/':if(num2)result=num1/num2;break;}int i=0;int result1=result;while(result1){i++;result1/=10;}for(;i;i--){S+=(result/(int)pow(10,i-1)+'0');result%=(int)pow(10,i-1);}lineEditor->setText(S);zhenghao=true;num1=num2=0;mark=1;S="";}void Calculator::button_ce_clicked(){zhenghao=false;S="";lineEditor->setText("0");num1=num2=0;mark=1;}Main代码:#include"calculator.h"int main(int argc,char *argv[]) {QApplication app(argc,argv);Calculator cal;cal.show();return app.exec();}运行结果四、总结通过计算器设计,学到了利用Qt设计简单窗口应用程序的的方法,初步了解了使用QT工具编写窗口程序的新颖,了解了槽和信号等基本知识,学会了如何使用新工具(Qt)帮助程序开发。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式系统课程设计报告
题目:基于QT的简单计算器
专业:计算机科学与技术
班级:
姓名:
学号:
指导老师:
日期:2012-12-26
第一章前言
设计背景
计算器(calculator;counter)一般是指“电子计算器”,计算器是能进行数学运算的手持机器,拥有集成电路芯片,其结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑)。

计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,虽然功能较单一,但因其操作模式的方便快捷和价格的低廉,携带方便等特点,已经被广泛应用于工程、学习、商业贸易等日常生活中,极大的方便了人们对于数字的整合运算,成为人们生活和办公中的必备品之一,深得使用者的青睐。

设计目的
本程序是基于linux下的嵌入式开发,所用软件为QT Creator,程序虽然简单,但是通过本程序的设计,可以进一步了解嵌入式系统开发工具以及熟悉linux环境下的常用命令,为以后进入嵌入式领域打下一定的基础。

通过该计算器程序软件的设计,培养独立思考、综合运用所学有关相应知识的能力,更好地巩固《C++程序语言设计》和《高级程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,体验理论与实践相结合的过程。

第二章功能需求分析
功能描述
本次设计的计算器在功能上大致与Windows系统自带的计算器程序相似,对于所设计的科学计算器,其功能大致为可以进行加(+)、减(-)、乘(*)、除(/)、简单算术计算。

由于接触QT时间还不太久,所以目前只能简单地实现这些功能,相信随着以后逐步的了解,本程序将实现更多的功能。

第三章开发工具简介
QT简介
由于本次设计的小程序是用QT Creator所设计的,所以我觉得有必要先介绍下QT开发工具的背景。

Qt是一个1991年由奇趣科技开发的跨平台C++图形界面应用程序开发框架。

它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。

Qt是面向对象语言,易于扩展,并且允许组件编程。

QT所具有的优势是:优良的跨平台特性,Qt支持下列操作系统: Microsoft Windows 95/98,Microsoft Windows NT,Linux,Solaris,SunOS,HP-UX,Digital UNIX (OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX 等等。

面向对象:Qt 的良好封装机制使得Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。

Qt 提供了一种称为signals/slots 的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。

丰富的API:Qt 包括多达250 个以上的C++ 类,还提供基于模板的collections,serialization,file,I/O device,directory management,date/time 类。

甚至还包括正则表达式的处理功能。

支持2D/3D 图形渲染,支持OpenGL大量的开发文档。

第四章详细设计过程
开发环境的搭建
本次所用系统环境为Ubuntu LTS,内核为Ubuntu搭建QT环境大致过程为:
1.安装g++,ubuntu默认是不带g++的,如果不安装的话,后面是无法进行桌面版的qt应用程序进行编译的,在终端中执行以下命令:
sudo apt-get install g++
2. Qt桌面版的安装
3.安装arm-linux-gcc (配置环境变量gedit /.bashrc 添加路径
export PATH=$PATH:/opt/FriendlyARM/toolschain/)
使配置文件立即生效:source /.bashrc或者注销logout 最好重启
(arm-linux-gcc -v查看版本信息)
4.安装编译库文件
5. 配置Qt编译ARM的环境(解压编译时间较长,具体过程不再赘述)
程序实现
对于界面的设计,采用的网格布局作为主布局,然后使用其addWidget函数添加部件,最后实现了基本的简易计算机的界面。

程序最终界面如下:
首先创建一个工程项目,名字为jsq,接着编写各个功能部件函数,这里仍使用信函和槽连接机制,我们没有使用信号和槽编辑器,而是直接在.cpp文件中添编写其代码来实现,首先在.h文件中对各个按键进行声明, 再到.cpp文件中编写相应的代码实现其功能。

例如窗体控制程序,按钮程序,计算功能则在程序代码中实现。

软件工作界面如下:
对于计算器,在界面上,点击相应的按钮,信号会随着点击传递到相应的槽函数中,并实现函数的功能,经过处理得到相应的结果。

并能够将结果输出。

下面依次介绍按钮及所连接的槽函数
相应的连接信号语句:
Button *clearAllButton = createButton(tr("Clear"), SLOT(Clear ()));
RM嵌入式系统教程[M].北京:机械工业出版社,2012:191-261.
[3] 闫锋欣,曾泉人.C++ GUI QT4编程(第二版)[M].北京:电子工业出版社,2010:108-232.
[4] 闫放莺.基于嵌入式Linux 软件平台技术的研究[D].西安:西北大学,2006.
[5] 郭兵.嵌入式软件开放式集成开发平台体系结构研究[D].成都:电子科技大学,2002.
[6] 谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,.。

相关文档
最新文档