qt课程设计实验报告

合集下载

qt数独课程设计

qt数独课程设计

qt数独课程设计一、课程目标知识目标:1. 理解数独的基本规则,掌握数独的解题技巧。

2. 学会运用qt编程实现数独游戏界面及其逻辑功能。

3. 掌握运用数独解题过程中的逻辑推理、分析能力和问题解决策略。

技能目标:1. 能够运用qt编程环境,设计并实现一个功能完善的数独游戏。

2. 培养学生的逻辑思维能力和编程实践能力,提高问题解决技巧。

3. 学会合作与沟通,能够在团队中发挥个人优势,共同完成项目任务。

情感态度价值观目标:1. 培养学生对编程和数学的兴趣,激发学生的学习热情。

2. 培养学生的耐心、细心和毅力,树立面对困难的积极态度。

3. 培养学生的团队精神,认识到团队合作的重要性,学会互相尊重与支持。

课程性质:本课程为信息技术与数学相结合的实践课程,强调学生的动手操作和团队合作。

学生特点:学生具备基本的数学知识和逻辑思维能力,对编程有一定了解,但实践经验不足。

教学要求:结合学生特点,注重培养学生的学习兴趣,提高实践能力,强调在操作过程中培养学生的逻辑思维和问题解决能力。

将课程目标分解为具体学习成果,以便在教学过程中进行有效评估和调整。

二、教学内容1. 数独基础知识:数独规则、数独技巧(唯一数字法、排除法、唯一候选数法等)。

2. qt编程基础:qt环境搭建、基本控件使用、事件处理、信号与槽机制。

3. 数独游戏设计与实现:- 界面设计:使用qt控件设计数独游戏界面,包括游戏棋盘、数字输入框、按钮等。

- 逻辑实现:编写数独游戏的逻辑代码,实现数独的生成、验证、提示等功能。

- 游戏测试:测试并优化数独游戏,确保游戏的稳定性和可用性。

4. 项目实践:分组进行项目实践,每组设计并实现一个完整的数独游戏。

5. 教学大纲:- 第一周:数独基础知识学习,了解数独规则和解题技巧。

- 第二周:qt编程基础学习,掌握qt基本控件的使用和事件处理。

- 第三周:数独游戏界面设计,学习使用qt控件设计游戏界面。

- 第四周:数独游戏逻辑实现,学习编写游戏逻辑代码。

qt课程设计实训小结

qt课程设计实训小结

qt课程设计实训小结一、教学目标本课程的教学目标是使学生掌握Qt课程设计的基本知识和技能,能够独立完成Qt应用程序的设计与开发。

具体目标如下:1.理解Qt的基本概念和架构。

2.掌握Qt应用程序的设计流程。

3.熟悉Qt常用的类和接口。

4.了解Qt的事件处理机制。

5.能够使用Qt Creator进行应用程序的开发。

6.能够使用Qt Widgets进行图形用户界面的设计。

7.能够使用Qt的信号与槽机制进行事件处理。

8.能够使用Qt的数据库功能进行数据存储和检索。

情感态度价值观目标:1.培养学生的创新意识和解决问题的能力。

2.培养学生的团队协作精神和沟通能力。

3.培养学生的自主学习和持续学习的习惯。

二、教学内容本课程的教学内容主要包括以下几个部分:1.Qt的基本概念和架构:Qt是什么,Qt的优点和缺点,Qt的版本和安装,Qt的模块和类。

2.Qt应用程序的设计流程:Qt Creator的使用,项目创建和管理,应用程序的框架结构,主窗口的设计和实现。

3.Qt Widgets的使用:按钮、文本框、标签、对话框等控件的使用,布局管理器的设计,工具栏和菜单的设计。

4.Qt的信号与槽机制:信号与槽的概念,信号与槽的连接,自定义信号与槽,信号与槽的运用。

5.Qt的数据库功能:数据库的基本概念,Qt对数据库的支持,数据库连接的建立和关闭,SQL语句的执行,数据模型的使用。

三、教学方法本课程的教学方法主要包括以下几种:1.讲授法:通过讲解和演示,使学生掌握Qt的基本概念和架构,以及应用程序的设计流程。

2.讨论法:通过小组讨论,使学生深入理解Qt的信号与槽机制和数据库功能。

3.案例分析法:通过分析典型案例,使学生掌握Qt Widgets的使用和事件处理。

4.实验法:通过上机实验,使学生熟练掌握Qt Creator的使用和应用程序的开发。

四、教学资源本课程的教学资源主要包括以下几种:1.教材:《Qt课程设计实训》。

2.参考书:《Qt 5.12官方文档》、《Qt Creator用户手册》。

qt贪吃蛇课程设计总结

qt贪吃蛇课程设计总结

qt贪吃蛇课程设计总结一、教学目标本课程的教学目标是使学生掌握Qt贪吃蛇游戏的基本开发方法和技巧,培养学生运用编程思维解决实际问题的能力。

具体目标如下:1.知识目标:–了解Qt框架的基本概念和原理;–掌握Qt Creator的使用方法和编程环境;–掌握贪吃蛇游戏的基本算法和数据结构;–熟悉Qt Widget编程和事件处理。

2.技能目标:–能够独立设置Qt开发环境,编写简单的Qt程序;–能够运用贪吃蛇游戏的基本算法,实现游戏的基本功能;–能够使用Qt Creator进行调试和优化程序;–能够根据需要,查阅相关资料和文档,解决问题。

3.情感态度价值观目标:–培养学生对编程和软件开发的兴趣和热情;–培养学生独立思考、自主学习和团队协作的能力;–培养学生勇于探索、创新和解决问题的精神;–培养学生具有良好的职业道德和责任意识。

二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.Qt框架的基本概念和原理:Qt概述、Qt模块、信号与槽机制、Qt类体系结构等;2.Qt Creator的使用方法和编程环境:安装与配置、界面布局、编写代码、调试与运行等;3.贪吃蛇游戏的基本算法和数据结构:游戏流程、坐标系、蛇身模型、食物模型、方向控制、碰撞检测等;4.Qt Widget编程和事件处理:窗口布局、控件使用、事件处理机制、键盘和鼠标事件等。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解Qt框架的基本概念和原理,贪吃蛇游戏的基本算法和数据结构;2.案例分析法:分析典型代码和案例,引导学生理解和掌握相关知识;3.实验法:让学生动手编写和调试Qt程序,培养实际编程能力;4.小组讨论法:分组进行讨论和实践,培养团队协作和解决问题能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将提供以下教学资源:1.教材:《Qt编程入门》、《Qt Creator入门与实践》等;2.参考书:《Qt 5开发实战》、《Qt 5核心编程》等;3.多媒体资料:教学PPT、视频教程、在线文档等;4.实验设备:计算机、网络环境、编程软件等。

Qt TCP实验报告

Qt TCP实验报告

Qt大型实验报告一、实验目的1. 了解并掌握Qt集成开发环境下使用Qt Designer开发图形界面程序的流程和相关操作;2 . 掌握在Qt Designer界面上为菜单项添加工具栏按钮、创建相应槽函数的方法;3. 了解并掌握Qt的信号槽和信号传递机制,并通过具体应用加深理解;4. 了解并掌握TCP通信机制并掌握QTcpSocket及QTcpServer类的具体使用方法;二、实验原理信号和槽机制信号:当对象改变其状态时,信号就由该对象发射(emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。

这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。

槽:用于接收信号,而且槽只是普通的对象成员函数。

一个槽并不知道是否有任何信号与自己相连接。

而且对象并不了解具体的通信机制。

信号与槽的连接:所有从QObject 或其子类( 例如Qwidget ) 派生的类都能够包含信号和槽。

因为信号与槽的连接是通过QObject 的connect() 成员函数来实现的。

客户端:类信号槽函数Client void fileSize(qint64 size) Void on_connected() Void message(const QString&str)VoiddisplaySocketError(QAbstractSocket::SocketErrore)void onError(qint32)Void connected()SocketError error() Void on_connected() void disconnected()MainWindow void on_Sendmsg_clicked() Void deleteLater()void on_Filerev_clicked() Voidon_socketDisconnected() void on_Sendfile_clicked()void setProccessBar(qint64 r)void updateProccessBar(qint64v)Voidon_socketError(qint32) void on_socketDisconnected()void on_socketError(qint32)信号与槽关联关系:connect(Client,SIGNAL(connected()),Client,SLOT(on_connected()));connect(Client, SIGNAL(error(QAbstractSocket::SocketError)),SLOT(displaySocketError(QAbstractSocket::SocketError)));connect(client,SIGNAL(disconnected()),client, SLOT(deleteLater()));connect(client,SIGNAL(disconnected()),MainWindow,SLOT(on_sock etDisconne c ted()));connect(client,SIGNAL(fileSize(qint64)),MainWindow,SLOT(setProc cessBar(qi nt64)));connect(client,SIGNAL(bytesWritten(qint64)),MainWindow,SLOT(up dateProcce ssBar(qint64)));connect(client,SIGNAL(onError(qint32)),MainWindow,SLOT(on_soc ketError(qi n t32)));服务器端:类信号槽函数Servervoidrcvmessage(QString)void rcvmsg(QString text)void file()void filerecv() void displayError(int)void finished()clientThreadvoid error(int) void on_socket_readyRead() voidmessage(QString)voidon_socket_disconnected() void filerecv() voiddisplaySocketError(QAbstractSocket::SocketError e)MainWindow voidupdateEditText(QString text)void updateProccessBar()信号与槽关联关系:connect(client,SIGNAL(error(int)),MainWindow,SLOT(displayError(i nt)));connect(client,SIGNAL(finished()), MainWindow, SLOT(finished()));connect(client, SIGNAL(finished()), client, SLOT(deleteLater()));connect(client,SIGNAL(message(QString)),MainWindow,SLOT(rcvm sg(QString)));connect(client, SIGNAL(filerecv()), MainWindow, SLOT(file()));connect(&QThread,SIGNAL(disconnected()),clientThread,SLOT(on_ socket_disconnected()));connect(&QThread,SIGNAL(read yRead()),clientThread,SLOT(on_soc ket_readyRead()));connect(&QThread,SIGNAL(error(QAbstractSocket::SocketError)),cl ientThread, SLOT(displaySocketError(QAbstractSocket::SocketError)));QT多线程QThread类提供了与系统无关的线程。

基于qt的课程设计报告

基于qt的课程设计报告

基于qt的课程设计报告一、课程目标知识目标:1. 让学生掌握Qt基本编程概念,如信号与槽机制、事件处理等;2. 使学生了解Qt图形用户界面设计原理,熟悉常用控件的使用;3. 帮助学生理解Qt的网络编程和数据库操作方法。

技能目标:1. 培养学生运用Qt进行图形用户界面设计的能力,能独立开发简单的应用程序;2. 提高学生解决实际问题的编程能力,学会分析需求并使用Qt技术进行实现;3. 培养学生的团队协作和沟通能力,学会在项目中进行有效分工与合作。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发他们探索新技术的好奇心;2. 培养学生认真负责的工作态度,养成良好编程习惯,注重代码规范与优化;3. 增强学生的自信心,让他们在解决问题中体验成功,培养克服困难的毅力。

课程性质分析:本课程为选修课,适用于有一定编程基础的学生。

课程以实践为主,注重培养学生的动手能力和实际应用能力。

学生特点分析:学生具备基本的编程知识,对图形用户界面设计有一定兴趣,但可能对Qt编程框架较为陌生。

部分学生可能在学习过程中遇到困难,需要教师耐心指导。

教学要求:1. 理论与实践相结合,注重实际操作能力的培养;2. 采用项目驱动教学,让学生在实际项目中掌握Qt编程技能;3. 课后提供丰富的学习资源,鼓励学生自主学习,提高解决问题能力。

二、教学内容1. Qt基本概念与编程环境- Qt简介与安装- Qt Creator使用方法- 常用控件与布局2. 信号与槽机制- 信号与槽的定义与使用- 事件处理与过滤3. 图形用户界面设计- 常用控件属性与样式设置- 自定义控件与绘图- 界面布局与美化4. 网络编程与数据库操作- 网络编程基础- 使用Qt网络模块实现简单客户端与服务器- 数据库操作与查询5. 实践项目:开发简易聊天软件- 需求分析- 界面设计与实现- 网络通信与数据库存储教学内容安排与进度:第1周:Qt基本概念与编程环境第2周:信号与槽机制第3周:图形用户界面设计第4周:网络编程与数据库操作第5-6周:实践项目开发与调试教材章节关联:本教学内容与教材中以下章节相关:1. 第1章:Qt概述与安装2. 第2章:Qt基本编程概念3. 第3章:图形用户界面设计4. 第4章:事件处理与信号与槽机制5. 第5章:网络编程与数据库操作教学内容确保科学性和系统性,通过实践项目将所学知识融会贯通,提高学生的实际应用能力。

QT实验报告

QT实验报告

QT(C++)课程设计报告学院:信息科学与技术学院姓名:***学号:************报告时间:2013年5月3日一.课程题目:计算器二.课程设计目的:一方面检测对于学过的相关知识的掌握熟练程度,另一方面可以再进一步的巩固。

三.需求分析及开发背景需要一个能够用于计算的工具,满足基本的计算需求,同时来显示C++语言的应用。

四.C++面向程序设计语言,面向对象。

可以说它是所有编程语言中的一门很重要的计算机语言,具有非常多的有点。

五.主要算法:见下面的实现文件。

六.课程设计内容1.程序功能说明:(1).计算功能:通过按键实现计算的功能。

(2).清除功能:点击clear按钮实现清除功能。

计算器图片:程序大体代码:头文件:#ifndef ALCULATOR_H#define ALCULATOR_H#include <qpushbutton.h>#include <qlineedit.h>#include <qstring.h>#include <qlayout.h>//在QT中取类class Calculator : public QWidget{Q_OBJECT //要定义有自定义信号或槽的类,必须将这一句写在最前面public:Calculator( QWidget *parent = 0 ); //构造函数private slots: //定义Slot函数slotButton(),当指针连接的信号发生时会调用此函数void slotButton(); //客户点击按钮时触发private:void addToExpression( char ch );void calculatExpression(); //计算表达式void clearExpression(); //清除表达式void sqrt2();void sqrt3();void power2();void recip();void power3();void recipx2();//成员变量QPushButton *num1Button;QPushButton *num2Button;QPushButton *num3Button;QPushButton *num4Button;QPushButton *num5Button;QPushButton *num6Button;QPushButton *num7Button; QPushButton *num8Button; QPushButton *num9Button; QPushButton *num0Button; QPushButton *pointButton;QPushButton *addButton; QPushButton *subButton; QPushButton *multButton; QPushButton *divButton;QPushButton *sqrt2Button; QPushButton *sqrt3Button; QPushButton *powerXButton; QPushButton *power2Button; QPushButton *recipButton; QPushButton *recipx2Button;QPushButton *clearButton; QPushButton *power3Button;QPushButton *equalButton;QLineEdit *lineEdit;//注:成员变量一般都用指针QString expressionEdit;int flag; //用于记录// 1:第一个数准备输入// 2.第一个数的第一位为0// 3.整数且第一个数字不是0// 4.已输入小数点// 5,6,7,8 第二个数// 9 已计算结果double result;};#endif // ALCULATOR_CPP实现文件:#include "calculator.h"#include <math.h>Calculator :: Calculator(QWidget *parent ) {flag = 1;result = 0;setMaximumSize( minimumSize() );lineEdit = new QLineEdit( this );lineEdit->setEnabled( false);num1Button = new QPushButton( "1", this );num2Button = new QPushButton( "2", this );num3Button = new QPushButton( "3", this );num4Button = new QPushButton( "4", this );num5Button = new QPushButton( "5", this );num6Button = new QPushButton( "6", this );num7Button = new QPushButton( "7", this );num8Button = new QPushButton( "8", this );num9Button = new QPushButton( "9", this );num0Button = new QPushButton( "0", this ); pointButton = new QPushButton( ".", this ); addButton = new QPushButton( "+", this );subButton = new QPushButton( "-", this );multButton = new QPushButton( "*", this );divButton = new QPushButton( "/", this );sqrt2Button = new QPushButton( tr("sqtr()"), this ); sqrt3Button = new QPushButton( "sqrt3()", this ); powerXButton = new QPushButton( "^", this );power2Button = new QPushButton( "^2", this );recipButton = new QPushButton( "1/x", this ); //reciprocalrecipx2Button = new QPushButton( "1/x^2", this );clearButton = new QPushButton( "clear", this );power3Button = new QPushButton( "^3", this );equalButton = new QPushButton( "=", this );connect( num1Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num2Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num3Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num4Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num5Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num6Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num7Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num8Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num9Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num0Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( addButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( subButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( multButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( divButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( powerXButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( equalButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( power3Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( sqrt2Button, SIGNAL(clicked()),SLOT(slotButton()) );connect( pointButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( sqrt3Button, SIGNAL(clicked()), SLOT( slotButton() ) );connect( power2Button, SIGNAL(clicked()),SLOT(slotButton() ) );connect( recipButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( clearButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( recipx2Button, SIGNAL(clicked()), SLOT(slotButton()) );//当点击各个不同的按钮时,所点击的按钮就会自动发布clicked()信号QGridLayout *keyLayout = new QGridLayout;keyLayout->addWidget( sqrt2Button, 0,0 );keyLayout->addWidget( sqrt3Button, 0,1 );keyLayout->addWidget( powerXButton, 0,2 );keyLayout->addWidget( recipButton, 0,3 );keyLayout->addWidget( clearButton, 0,4 );keyLayout->addWidget( num1Button, 1,0 );keyLayout->addWidget( num2Button, 1,1 );keyLayout->addWidget( num3Button, 1,2 );keyLayout->addWidget( power2Button, 1,3 );keyLayout->addWidget( power3Button, 1,4 );keyLayout->addWidget( num4Button, 2,0 );keyLayout->addWidget( num5Button, 2,1 );keyLayout->addWidget( num6Button, 2,2 );keyLayout->addWidget( addButton, 2,3 );keyLayout->addWidget( subButton, 2,4 );keyLayout->addWidget( num7Button, 3,0 );keyLayout->addWidget( num8Button, 3,1 );keyLayout->addWidget( num9Button, 3,2 );keyLayout->addWidget( multButton, 3,3 );keyLayout->addWidget( divButton, 3,4 );keyLayout->addWidget( num0Button, 4,0 );keyLayout->addWidget( pointButton, 4,1 );keyLayout->addWidget( recipx2Button,4,2 );//keyLayout->addWidget( equalButton, 4,3 );keyLayout->addMultiCellWidget( equalButton, 4,4, 3,4 );QVBoxLayout *mainLyout = new QVBoxLayout( this );mainLyout->addWidget( lineEdit );mainLyout->addLayout( keyLayout );}void Calculator :: slotButton(){QPushButton *btn = (QPushButton *)sender();if( btn == num1Button )addToExpression( '1' );else if( btn == num2Button )addToExpression( '2' );else if( btn == num3Button )addToExpression( '3' );else if( btn == num4Button )addToExpression( '4' );else if( btn == num5Button )addToExpression( '5' );else if( btn == num6Button )addToExpression( '6' );else if( btn == num7Button )addToExpression( '7' ); else if( btn == num8Button ) addToExpression( '8' ); else if( btn == num9Button ) addToExpression( '9' ); else if( btn == num0Button ) addToExpression( '0' ); else if( btn == pointButton ) addToExpression( '.' ); else if( btn == addButton ) addToExpression( '+' ); else if( btn == subButton ) addToExpression( '-' ); else if( btn == multButton ) addToExpression( '*' ); else if( btn == divButton ) addToExpression( '/' ); else if( btn == powerXButton ) addToExpression( '^' ); else if( btn == equalButton ) calculatExpression();else if( btn == clearButton )clearExpression();else if( btn == sqrt2Button ) sqrt2();else if( btn == sqrt3Button ) sqrt3();else if( btn == power2Button ) power2();else if( btn == recipButton ) recip();else if( btn == power3Button ) power3();else if( btn == recipx2Button ) recipx2();}// 1:第一个数准备输入// 2.第一个数的第一位为0// 3.整数且第一个数字不是0// 4.已输入小数点// 5,6,7,8 第二个数// 9 已计算结果void Calculator :: addToExpression(char ch) {if( flag == 1 ){if( ch == '0' ){expressionEdit.append( ch );flag = 2;}else if( ch >'0' && ch <= '9' ){expressionEdit.append( ch );flag = 3;}else if( ch == '.' ){expressionEdit.append( "0." );flag = 4;}}else if( flag == 2 ){if( ch >'0' && ch <= '9' ){expressionEdit.replace( expressionEdit.length()-1, 1, ch );flag = 3;}else if( ch == '.' ){expressionEdit.append( ch );flag = 4;}else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^'){expressionEdit.append( ch );flag = 5;}}else if( flag == 3 ){if( ch >='0' && ch <= '9' ){expressionEdit.append( ch );}else if( ch == '.' ){expressionEdit.append( ch );}else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^' ){expressionEdit.append( ch );flag = 5;}}else if( flag == 4 ){if( ch >= '0' && ch <= '9' )expressionEdit.append( ch );else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^'){expressionEdit.append( ch );flag = 5;}}else if( flag == 5 ){if( ch == '0' ){expressionEdit.append( ch );}if( ch == '.' ){expressionEdit.append( "0." );flag = 8;}else if( ch >'0' && ch <= '9' ){expressionEdit.append( ch );flag = 7;}}else if( flag == 6 ){if( ch >'0' && ch <= '9' ){expressionEdit.replace( expressionEdit.length()-1, 1, ch );flag = 7;}else if( ch == '.' ){expressionEdit.append( ch );flag = 8;}}else if( flag == 7 ){if( ch > '0' && ch <= '9' ){expressionEdit.append( ch );}else if( ch == '.' ){expressionEdit.append( ch );flag = 8;}}else if( flag == 8 ){if( ch >= '0' && ch <= '9' )expressionEdit.append( ch ); }else if( flag == 9 ){if( ch == '0' ){expressionEdit.append( '0' );flag = 2;}else if( ch > '0' && ch <= '9' ){expressionEdit.append( ch );flag = 3;}else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^' ){expressionEdit.append( QString::number( result ) );expressionEdit.append( ch );flag = 5;}}lineEdit->setText( expressionEdit );}void Calculator :: calculatExpression(){if( flag == 6 || flag == 7 || flag == 8 ){double num1, num2;bool error = false;char oper;sscanf( tin1(), "%lf%c%lf", &num1, &oper, &num2 ); //得到数和运算符switch( oper ){case '+':result = num1+num2;break;case '-':result = num1-num2;break;case '*':result = num1*num2;break;case '/':if( num2 == 0 ) //如果除数为0error = true;elseresult = num1/num2;break;case '^':result = pow(num1, num2 );break;}expressionEdit.append('=');if( error ) //如果有错expressionEdit.append( "error" );elseexpressionEdit.append( QString::number( result ));lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 2 || flag == 3 || flag == 4 ){double num1;sscanf( tin1(), "%lf", &num1 );expressionEdit.append( "=" );expressionEdit.append( QString::number( num1 ) );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: clearExpression(){expressionEdit.remove( 0, expressionEdit.length() );lineEdit->setText( expressionEdit );flag = 1;}void Calculator :: sqrt2(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 0.5 );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "sqrt( %1 ) = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){if( result < 0 )return;expressionEdit = QString( "sqrt( %1 ) = ").arg( result );result = pow( result, 0.5 );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: sqrt3(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 1./3. );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "sqrt3( %1 ) = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit = QString( "sqrt3( %1 ) = ").arg( result );result = pow( result, 1./3. );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator::power2(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 2 );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "%1^2 = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit = QString( "%1^2 = ").arg( result );result = ::pow( result, 2 );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator::recip(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble( );if( num == 0 ) return;result = 1./num;expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/%1=%2" ).arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){if( result == 0 ) return;expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/%1=" ).arg( result );result = 1./result;expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: power3(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 3 );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "%1^3 = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit = QString( "%1^3 = ").arg( result );result = pow( result, 3 );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: recipx2( ){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble( );if( num == 0 ) return;result = 1./( num*num);expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/(%1^2)=%2" ).arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/(%1^2)=" ).arg( result );if( result == 0 ) return;result = 1./(result*result);expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0,expressionEdit.length() );}}计算器的计算功能就是通过上述的一系列算法实现的。

QT-五子棋游戏设计-课程设计报告

QT-五子棋游戏设计-课程设计报告

2013-2014学年秋季学期《Windows程序设计》课程设计报告学院:计算机与信息学院序号: 56姓名:周春雷学号: 2012112302指导教师:王安慧完成时间 2014 年 05月29日目录一、课程设计的目的 (1)二、课程设计的容及要求 (1)三、关键技术及相关原理介绍 (1)四、系统的总体设计 (2)五、设计思路及关键问题的解决方法 (3)六、设计模块分类 (4)1. 输入模块 (4)2. 输出模块 (6)3. 判断模块 (7)①判断输赢模块 (7)②判断命令模块 (11)七、运行结果截屏 (13)一、课程设计的目的通过所学的知识和技术,在老师的帮助下以及自己查询资料,完成对五子棋游戏的编程实现,使程序支持人人战,并且可以完成判断输赢,悔棋,从新开始等基本功能。

本次课程设计的课题简单,且娱乐性强。

在完成课题的过程中可以很好的复习学过的知识和技术,并且在完成设计编程后,可以很大程度上提高自信心和好学心,同时在做的过程中遇到难题能主动查阅资料、寻求帮助,对团队协作以及对网络资源的有效利用有了更深的体会。

二、课程设计的容及要求课程设计的容:本次设计将提供一个“五子棋”的游戏程序,可完成的功能有“人与人对战”、悔棋、开始新游戏。

课程设计的要求:使用QT软件开发,语言使用C++。

三、关键技术及相关原理介绍本系统主要分为输入模块、输出模块和判断模块这三大块。

各模块依据所属功能的不同来划分。

输入模块主要实现用户对数据的输入,输出模块则是完成对用户输入到系统的数据在棋盘上的显示,而判断模块这是系统的主要模块,完成对用户输赢的判断和对用户悔棋和从新开始等操作命令的响应。

本次采用了QT进行程序设计,对于图形界面有较好的处理方法和环境。

四、系统的总体设计图1:系统功能模块图图1是系统的总体模块图,依据系统的不同功能包含3个大的模块:输入模块,判断模块和输出模块。

各个模块的具体代码实现和功能描述在后面将详细的解释。

QT课程设计报告【范本模板】

QT课程设计报告【范本模板】

题目:简易计算器学院:信息科学与技术专业:软件工程姓名:学号:2014.04.19一、需求分析当今社会是信息社会,科技经济高速发展的社会,为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。

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

下面是用C++编写的,基于Qt图形用户界面应用程序框架的计算器,它实现了对整数,浮点数的加﹑减﹑乘﹑除﹑幂运算。

二、设计过程1.界面设计在QT设计器中布置好计算器界面,所有按键采用的pushButton控件,显示计算结果采用的是lineEdit控件.完成的界面如下图所示:图计算器界面为了使按钮显示美观,将每个button的属性设置如下:图button大小、字体属性为符合人们的使用习惯,将lineEdit空间的属性更改,使得输入的数字和符号出现在空间的右边起。

如图:图lineEdit控件属性更改2.控件重命名将界面布局设计好后,将各个空间改名,例如“0"改为but0.3.简单信号响应对于button exit退出程序,这样简单的响应,直接在设计器中通过添加信号和槽来完成,如图:图信号和槽4.辅助数据成员及函数为了区分每一次计算和保存操作数、操作符,和辅助函数(如:输出函数),在calculator。

h的类中设定数据成员以及成员函数:calculat。

cpp中辅助函数的实现:5.数字键的响应以button 0为例,在calculator。

cpp文件中添加but0的代码,如下:6.小数点的响应当一个操作数已经输入了一个小数点时,将小数点按钮置为不可用,以防用户重复输入小数点,导致输入操作数不合法,如下如:7.运算功能的响应以加法为例,向lineEdit中输入显示+号,并在数据成员中保存,以便后面进行计算:8.清屏的响应首先将lineEdit的显示清除,再置为0;将一切辅助的数据成员数据重置到新一轮计算的开始状态,如:运算符为空,操作数为0等.实现如下:9.等号的响应根据数据成员记录的运算符和操作数进行相应的计算,并将得出的结果转化为string显示在lineEdit上,并重置辅助数据成员,准备下一轮的计算开始。

qt实验报告智能家居

qt实验报告智能家居

qt实验报告智能家居实验目的利用qt以及c++语言数据结构等相关知识后,在windows开发环境下,以cc2530芯片为控制核心,利用Zigbee和串口通信技术,温湿度、电机、烟雾、红外等传感器为环境信息采集源,以串口控制为辅助,来制作一个物联网智能家居系统。

基本要求如下:(1)界面友好,易与操作。

采用菜单或其它人机交互方式进行选择。

(2)能实现数据的采集与处理,通过智能的软硬件处理方式,使用简单的方式,能够在PC端解决一些生活中常见的问题。

1.2基本功能(1)在IAR环境下编写传感器模块程序,并利用烧写器将实现各传感器模块功能的程序烧进传感器内,使传感器实现功能。

(2)通过Qt编写可运行程序并利用超级终端加载到网关,在网关上实现对各模块反馈的信息显示以及控制。

(3)利用Zigbee通信技术实现各模块之间的通信,并与串口相连,以交换信息。

1.3模块功能描述1.3.1主功能函数模块本模块在windows系统环境下利用Qt Creator编写可执行程序,来实现各种功能。

本模块的主要功能是通过鼠标点击操作界面可以实现串口的打开和关闭,电机的正转.停止操作,LED灯的打开和关闭,实时更新显示当前环境下温度、湿度以及光照强度,显示当前烟雾反应情况和当前的系统时间,并且通过操作程序中的一个窗口来显示操作信息。

1.3.2串口通信模块通信模块主要是以CC2530芯片的Zigbee结点和串口通信模块实现了收集各个传感器模块的信息,并连接到网关进行信息反馈,再将网关的控制信息反馈到各个模块。

1.3.3电机模块本模块的主要功能是用户在网关的程序中通过按键,实现对电机的正转、反转、停转的操作,以此来模拟智能家居中的风扇开关或窗帘的拉起落下等。

电机模块的LED灯则是模拟智能家居中的分布于各个房间的电灯,通过操作界面选择某个灯可以控制LED灯的打开和关闭。

1.3.4时间获取模块本模块的主要功能是在操作界面上显示当前系统的时间,通过串口与PC机连接获取时间信息,用来模拟智能家居中的时钟等设施。

QT人脸识别课程设计

QT人脸识别课程设计

QT人脸识别课程设计一、课程目标知识目标:1. 学生能理解人脸识别的基本概念,掌握QT环境下进行人脸识别的关键技术。

2. 学生能描述人脸检测、特征提取和识别等环节的基本原理。

3. 学生了解人脸识别技术在现实生活中的应用。

技能目标:1. 学生能运用QT编程环境进行人脸识别程序的编写和调试。

2. 学生掌握使用相关算法库(如OpenCV)进行人脸检测和特征提取的方法。

3. 学生具备分析和解决人脸识别过程中出现问题的能力。

情感态度价值观目标:1. 学生培养对人工智能技术的兴趣,激发创新精神和实践能力。

2. 学生认识到人脸识别技术在保护个人隐私、维护公共安全等方面的积极作用。

3. 学生在团队协作中学会尊重他人,培养合作精神和沟通能力。

课程性质:本课程为信息技术学科选修课程,以实践操作为主,注重培养学生的编程能力和实际应用能力。

学生特点:八年级学生,具备一定的计算机操作和编程基础,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合学生特点,注重理论与实践相结合,以项目驱动教学,让学生在实践过程中掌握知识,提高能力。

通过课程目标的设定,使学生在知识、技能和情感态度价值观等方面得到全面提升。

在教学过程中,关注学生的个体差异,提供有针对性的指导,确保每位学生都能达到课程目标。

二、教学内容1. 人脸识别技术概述- 介绍人脸识别的基本概念、发展历程和应用领域。

- 分析人脸识别技术的优势和挑战。

2. QT环境配置与基本操作- 指导学生安装和配置QT开发环境。

- 介绍QT的基本操作和编程方法。

3. 人脸检测与特征提取- 讲解人脸检测的常用算法(如Haar级联分类器)。

- 介绍特征提取方法(如LBP、HOG)。

4. 人脸识别算法- 详细讲解支持向量机(SVM)、深度学习(如卷积神经网络)等常用识别算法。

- 分析不同算法的优缺点及适用场景。

5. 实践项目:人脸识别系统开发- 按照项目需求,指导学生进行人脸检测、特征提取和识别模块的设计与实现。

qt实现智能家居课程设计

qt实现智能家居课程设计

qt实现智能家居课程设计一、课程目标知识目标:1. 让学生理解智能家居的基本概念、原理及其应用场景;2. 掌握Qt编程语言的基本语法和常用控件的使用;3. 学会使用Qt进行界面设计与编程,实现智能家居系统的基本功能。

技能目标:1. 培养学生运用Qt编程语言解决实际问题的能力;2. 提高学生进行项目设计与团队协作的能力;3. 培养学生分析问题、解决问题的能力。

情感态度价值观目标:1. 培养学生对智能家居领域的兴趣,激发学生探索未知、创新实践的欲望;2. 增强学生的环保意识,培养学生关爱家庭、关爱社会的责任感;3. 培养学生团队合作精神,提高学生的沟通能力。

课程性质分析:本课程属于信息技术学科,结合当前热门的智能家居领域,通过Qt编程实现智能家居系统设计。

课程具有较强的实践性和应用性,要求学生在掌握基本理论知识的基础上,注重动手实践和创新能力培养。

学生特点分析:本课程针对的是高中年级学生,他们在信息技术方面有一定的基础,对新鲜事物充满好奇,具备一定的自学能力和创新意识。

但编程实践经验不足,需要通过课程学习,提高编程技能和实际应用能力。

教学要求:1. 注重理论与实践相结合,让学生在动手实践中掌握知识;2. 采用项目驱动的教学方法,引导学生主动探索、发现问题;3. 强调团队合作,培养学生的沟通能力和协作精神;4. 关注学生个体差异,因材施教,提高学生的综合素质。

二、教学内容1. 智能家居基本概念与原理:介绍智能家居的定义、发展历程、系统架构及其工作原理。

相关教材章节:第一章 智能家居概述2. Qt编程基础:讲解Qt编程语言的基本语法、常用控件、事件处理机制和信号与槽机制。

相关教材章节:第二章 Qt编程基础3. 界面设计与编程:学习Qt Designer的使用,掌握界面布局、控件使用和样式设置。

相关教材章节:第三章 界面设计与编程4. 智能家居功能实现:利用Qt编程实现智能家居系统的监控、控制和报警功能。

c++qt项目系统课程设计报告

c++qt项目系统课程设计报告

c++qt项目系统课程设计报告C++和Qt项目系统课程设计报告是一个涉及到C++编程语言和Qt框架的项目设计报告。

在这份报告中,我们将详细介绍课程设计的背景、目标和所采用的方法。

同时,我们还会描述项目的整体架构和各个模块的功能。

此外,我们将讨论所遇到的挑战和解决方案,并对项目的性能和可扩展性进行评估。

首先,让我们来介绍课程设计的背景和目标。

该课程设计旨在让学生运用C++编程语言和Qt框架开发一个实际的项目系统。

通过这个项目,学生将能够巩固所学的知识,并且了解软件开发的整个过程,包括需求分析、设计、编码、测试和文档编写等。

接下来,我们将讨论所采用的方法。

在项目的初期,我们进行了需求分析,明确了项目的功能和特性。

然后,我们进行了系统设计,包括整体架构设计和各个模块的详细设计。

在编码阶段,我们采用了C++编程语言和Qt框架进行开发,并且遵循了良好的编码规范和设计模式。

在测试阶段,我们进行了单元测试和集成测试,确保系统的功能和性能符合要求。

最后,我们编写了项目文档,包括用户手册和技术文档,以便用户和开发人员使用和维护系统。

接下来,让我们来描述项目的整体架构和各个模块的功能。

整体架构采用了MVC(模型-视图-控制器)的设计模式,将数据、界面和业务逻辑分离。

模型层负责处理数据的存储和操作,视图层负责展示用户界面,控制器层负责协调模型和视图之间的交互。

在模块方面,我们可以划分为用户管理模块、项目管理模块、任务管理模块等。

用户管理模块负责用户的注册、登录和权限管理。

项目管理模块负责项目的创建、编辑和删除。

任务管理模块负责任务的分配、更新和跟踪。

每个模块都有相应的界面和功能,以满足用户的需求。

在项目开发过程中,我们遇到了一些挑战,例如需求变更、技术限制和时间压力等。

为了解决这些问题,我们与团队成员进行了充分的沟通和协作,并且灵活调整项目计划和资源分配。

此外,我们还积极寻求帮助和参考相关文档和资源,以提高开发效率和质量。

QT实验报告范文

QT实验报告范文

QT实验报告范文实验报告-QT编程一、实验目的1.理解QT框架的概念和特点;2.掌握QT编程的基本语法和使用方法;3.学习使用QT进行界面设计和图形绘制。

二、实验内容本次实验主要分为三个部分:QT框架的概述、QT编程基础和实际操作。

2.1QT框架的概述QT(即"Qt")是一种跨平台C++应用程序开发框架。

它可以在不同的操作系统上如Windows、macOS和Linux上运行,并提供了一套完整的开发工具链。

QT提供了一个基于信号和槽机制的事件模型,使得开发者可以通过简单的代码连接不同的对象,实现对象之间的通信和交互。

这个机制使得QT编程变得简单而灵活。

2.2QT编程基础QT框架中的基本概念有:- QObject:所有的类都从QObject继承,使得类具有信号槽机制和对象树的功能。

- QWidget:继承自QObject,是所有GUI类的基类。

它可以显示在屏幕上,接受用户的输入,并显示自己的状态。

- QApplication:应用程序类,是QT程序的入口点。

在程序的主函数中创建一个QApplication对象后,可以调用exec(函数进入事件循环。

QT框架中的基本语法和使用方法包括:- 信号和槽机制:通过connect函数将信号与槽函数连接,使得当一些特定事件发生时,槽函数会被调用。

-事件处理:通过重写事件处理函数来处理各种不同的事件,如鼠标点击、键盘输入等。

- 布局管理器:QT提供了一些布局管理器来帮助开发者实现灵活的界面布局,如QVBoxLayout、QHBoxLayout等。

2.3实际操作本次实验中,我们将实际用QT进行界面设计和图形绘制。

首先,我们通过QT Designer创建一个简单的界面,包含一个按钮和一个文本框。

然后,我们使用QT Creator将界面和代码进行关联,使得按钮点击时,文本框中显示一段文字。

其次,我们使用QT自带的绘图类和函数进行图形绘制。

通过继承QWidget类,并重写其paintEvent函数,我们可以在界面上绘制各种图形,如直线、矩形、椭圆等。

qt课程设计绘报告

qt课程设计绘报告

qt课程设计绘报告一、课程目标知识目标:1. 让学生掌握Qt图形用户界面设计的基本原理,理解其编程模式和事件处理机制。

2. 使学生能够运用Qt进行窗口、控件和布局的设计,并能实现基本的人机交互功能。

3. 帮助学生了解Qt中的信号与槽机制,掌握其在图形界面编程中的应用。

技能目标:1. 培养学生运用Qt进行界面设计的能力,能够独立完成简单图形用户界面的编写。

2. 提高学生的问题解决能力,使其在遇到界面设计问题时,能够运用所学知识进行有效解决。

3. 培养学生的团队协作能力,学会在项目中进行分工与合作,共同完成复杂的图形用户界面设计。

情感态度价值观目标:1. 激发学生对图形用户界面设计的兴趣,培养其主动学习和探索的精神。

2. 培养学生关注用户需求,注重用户体验,提高其审美观念和设计品味。

3. 引导学生认识到图形用户界面设计在软件开发中的重要性,增强其职业责任感。

课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际操作能力。

学生特点:学生具备一定的编程基础,对图形用户界面设计有一定了解,但实际操作能力有待提高。

教学要求:结合课本内容,以案例教学为主,注重理论与实践相结合,培养学生的实际操作能力。

在教学过程中,关注学生的个体差异,鼓励学生提问和讨论,提高其问题解决能力。

同时,注重培养学生的团队协作精神,提高其综合素质。

通过本课程的学习,使学生能够达到上述课程目标,为今后的软件开发工作打下坚实基础。

二、教学内容本课程教学内容分为五个部分,确保学生能够系统地掌握Qt图形用户界面设计的相关知识。

1. Qt基本概念与编程环境:介绍Qt的发展历程、特点及编程环境搭建,使学生了解Qt的基本框架和编程模式。

教材章节:第一章.Qt概述与安装内容:Qt发展历程、特点、安装与配置、第一个Qt程序。

2. Qt基本控件与布局:讲解Qt中的常用控件及其属性设置,学习布局管理器,使学生能够进行基本的界面设计。

教材章节:第二章.Qt基本控件与布局内容:按钮、文本框、标签、布局管理器等控件的使用。

qt实验报告

qt实验报告

嵌入式系统界面设计实验实验题目:基于Qt的图片表格转换学院: **学院专业:电子信息工程班级:学号:姓名:小组成员:编写日期: 2019.10目录1. 实验设计背景 (1)2. 实验设计目的 (1)3. 实验设计环境 (1)4. 实验系统需求分析 (1)4.1 系统调查 (1)4.2 用户需求 (2)4.3 可行性分析 (2)4.4 系统业务流程图 (3)5. 实验具体操作步骤及方法 (3)5.1 程序运行开始主界面 (3)5.2 用户修改界面 (4)5.3 最终生成表格 (4)6. 实验结果分析 (5)7. 实验效果图 (6)8. 实验设计具体任务分工 (6)9. 实验设计心得体会 (6)1.实验设计背景当今办公室中有不少的表格是基于图片的这给后期人员的校对处理带来了不少的麻烦,特别是列数较多行数较多的表格。

在将表通过人工的方法转换为Excel 表格时容易出现差错,表格行列错位、数据抄错等等问题。

长时间的工作还容易损害校对人员的健康。

2.实验设计目的1.将表格分解成小片,以便于人工填写2.尽可能的通过软件将图片数字转换为文字3.Excel表格导出3.实验设计环境Visual Studio CodePython 3.7Python包:Pytesseract、openpyxl、numpy、cv2Qt CreaterTesseract-OCR4.实验系统需求分析4.1系统调查在许多小公司的办公中,由于大多业务系统都是使用的通用的模板,没有对具体情形进行优化,以及以前未使用办公系统的历史遗留问题,在实际的办公中经常会出现大量图像表格,需要人为地输入到EXCEL表格中以用于后续公司的各项统计工作4.2用户需求将PNG、JPG、BMP等格式的图片表格转化为EXCEL 的数字表格方便后续的统计工作4.3可行性分析Python中中存在大量的用于图像处理的库opencv等可以方便地对图像表格进行处理分割成小块。

qt课程设计报告

qt课程设计报告

qt课程设计报告一、课程目标知识目标:1. 学生能够理解并掌握Qt编程基础,包括基本语法、数据类型、变量和常量的使用。

2. 学生能够掌握Qt中的事件处理机制,并能运用到实际项目中。

3. 学生能够熟练运用Qt中的布局管理器,实现界面组件的合理布局。

4. 学生能够掌握Qt中的信号与槽机制,实现组件间的通信。

技能目标:1. 学生能够运用Qt Creator开发环境,创建、调试和运行简单的Qt应用程序。

2. 学生能够运用所学知识,设计和实现具有基本功能的桌面应用程序。

3. 学生能够运用Qt中的绘图工具,实现自定义图形的绘制。

4. 学生能够运用Qt中的文件操作,实现数据的读写和存储。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,提高其学习主动性和积极性。

2. 培养学生的团队协作精神,使其在项目实践中学会与他人合作、沟通。

3. 培养学生的创新意识和问题解决能力,鼓励其在编程过程中积极思考、勇于尝试。

4. 培养学生遵循编程规范,养成良好的编程习惯。

本课程针对五年级学生,结合Qt编程语言的特点,注重实践性和实用性。

在教学过程中,充分考虑学生的年龄特点,采用生动的案例和趣味性的教学方式,激发学生的学习兴趣。

课程目标分解为具体的学习成果,以便教师在教学设计和评估过程中能够有针对性地进行指导,确保学生达到预期学习效果。

二、教学内容1. Qt编程基础:- 环境搭建与Qt Creator使用- 基本语法、数据类型、变量与常量- 运算符、表达式和语句2. Qt事件处理机制:- 事件类型与事件处理函数- 信号与槽机制- 事件过滤器3. 布局管理器:- 布局管理器概述- 线性布局、网格布局、表单布局等- 自定义布局4. 组件与容器:- 常用组件的使用(按钮、文本框、标签等)- 容器组件(盒子布局、栈等)- 组件属性设置与样式定制5. 绘图与动画:- QPainter绘图- QPixmap与QBitmap- 基本动画效果实现6. 文件操作与数据存储:- 文件读写- QDomDocument与XML文件操作- 数据库操作(SQLite)7. 实践项目:- 设计并实现一个简易计算器- 设计并实现一个简单的记事本应用- 设计并实现一个动画效果展示本教学内容根据课程目标制定,涵盖Qt编程的基本概念、核心技术及实践应用。

QT综合作业实验报告

QT综合作业实验报告

一、实验目的1,了解并掌握Qt集成开发环境下使用Qt Designer开发图形界面程序的流程和相关操作;2,了解并掌握Qt的信号槽和信号传递机制,并通过具体应用加深理解;3,了解并掌握使Qt应用程序支持中文或国际化的方法,并在本次实验中使用;4,了解并掌握QPainter的translate、shear等库函数的使用方法和Widget类的使用方法,并通过本次实验加深理解;5,掌握在Qt Designer界面上为菜单项添加工具栏按钮、创建相应槽函数的方法;6,了解并掌握使用双缓冲机制绘图的方法。

二、实验环境操作系统:Windows 7应用软件:Qt Creator开发平台:qt-sdk-win-opensource-2009.04三、程序流程图:四、核心源代码mainwindow.cpp的内容(实现菜单项的功能和绘图功能的调用) #include "mainwindow.h"#include "ui_mainwindow.h"#include "donewdialog.h"#include <QMessageBox>#include <QFileDialog>#include <QPainter>#include "aboutdialog.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);setWindowTitle(tr("Qt绘图板"));setFixedSize(700,500); //主窗口大小设为700*500area = new PaintArea;scrollArea = new QScrollArea;scrollArea->setBackgroundRole(QPalette::Dark); //scrollArea对象的背景色设为Dark scrollArea->setWidget(area); //将画布添加到scrollArea中scrollArea->widget()->setMinimumSize(800,600); //scrollArea初始化大小设为800*600ui->dockWidget->hide();setCentralWidget(scrollArea); //将scrollArea加入到主窗口的中心区isSaved = false;curFile = tr("未命名.png");creatColorComboBox(ui->penColorComboBox); //画笔颜色组合框creatColorComboBox(ui->brushColorComboBox); //填充颜色组合框}MainWindow::~MainWindow(){delete ui;}void MainWindow::changeEvent(QEvent *e){QMainWindow::changeEvent(e);switch (e->type()) {case QEvent::LanguageChange:ui->retranslateUi(this);break;default:break;}}void MainWindow::doOpen(){if (maybeSave()){QString fileName = QFileDialog::getOpenFileName(this,tr("打开文件"), QDir::currentPath());if (!fileName.isEmpty()){area->openImage(fileName);scrollArea->widget()->resize(area->getImageSize());//获得图片的大小,然后更改scrollArea的大小isSaved = true;curFile = fileName;}}}void MainWindow::doNew()if(maybeSave()){DoNewDialog dlg;if(dlg.exec() == QDialog::Accepted){int width = dlg.getWidth();int height = dlg.getHeight();area->setImageSize(width,height);scrollArea->widget()->resize(width,height);area->setImageColor(dlg.getBackColor());isSaved = false;}}}bool MainWindow::maybeSave(){if(area->isModified()){QMessageBox::StandardButton box;box = QMessageBox::warning(this,tr("保存文件"),tr("图片已经改变,是否保存?"), QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);if(box == QMessageBox::Yes){return doFileSave();}else if(box == QMessageBox::Cancel){return false;}}return true;}bool MainWindow::doFileSave(){if(isSaved){return saveFile(curFile);}else return doFileSaveAs();}bool MainWindow::saveFile(QString fileName){if(area->saveImage(fileName,"png"))isSaved = true;return true;}else return false;}bool MainWindow::doFileSaveAs(){QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),curFile); if(fileName.isEmpty()){return false;}else return saveFile(fileName);}void MainWindow::on_action_N_triggered() //新建菜单{doNew();}void MainWindow::on_action_O_triggered() //打开菜单{doOpen();}void MainWindow::on_action_S_triggered() //保存菜单{doFileSave();}void MainWindow::on_action_A_triggered() //另存为菜单{doFileSaveAs();}void MainWindow::on_action_X_triggered() //退出菜单{if(maybeSave())qApp->quit();}void MainWindow::closeEvent(QCloseEvent *event) //关闭事件{if(maybeSave())qApp->quit();else event->ignore();}void MainWindow::on_action_P_triggered() //打印菜单{area->doPrint();}void MainWindow::on_action_4_triggered() //放大菜单{area->zoomIn();scrollArea->widget()->resize(area->getImageSize());//获得图片的大小,然后更改scrollArea的大小}void MainWindow::on_action_5_triggered() //缩小菜单{area->zoomOut();}void MainWindow::on_action_6_triggered() //还原菜单{area->zoom_1();}void MainWindow::on_action_7_triggered() //旋转菜单{area->doRotate();}void MainWindow::on_action_8_triggered() //拉伸菜单{area->doShear();}void MainWindow::on_action_10_triggered() //清空菜单{area->doClear();}void MainWindow::on_action_11_triggered() //绘图工具栏菜单{ui->dockWidget->show();}void MainWindow::creatColorComboBox(QComboBox *comboBox){QPixmap pix(16,16);QPainter painter(&pix);painter.fillRect(0,0,16,16,Qt::black); //先绘制一个16*16的小图片,然后给其涂色comboBox->addItem(QIcon(pix),tr("黑色"),Qt::black); //再用该图片作为组合框条目的图标painter.fillRect(0,0,16,16,Qt::white);comboBox->addItem(QIcon(pix),tr("白色"),Qt::white);painter.fillRect(0,0,16,16,Qt::red);comboBox->addItem(QIcon(pix),tr("红色"),Qt::red);painter.fillRect(0,0,16,16,Qt::green);comboBox->addItem(QIcon(pix),tr("绿色"),Qt::green);painter.fillRect(0,0,16,16,Qt::blue);comboBox->addItem(QIcon(pix),tr("蓝色"),Qt::blue);painter.fillRect(0,0,16,16,Qt::yellow);comboBox->addItem(QIcon(pix),tr("黄色"),Qt::yellow);comboBox->addItem(tr("无颜色"),Qt::transparent); //即透明}void MainWindow::on_shapeComboBox_currentIndexChanged(QString shape) //选择图形组合框{if(shape == tr("无"))area->setShape(PaintArea::None); //利用PaintArea类中的枚举变量else if(shape == tr("矩形"))area->setShape(PaintArea::Rectangle);else if(shape == tr("直线"))area->setShape(PaintArea::Line);else if(shape == tr("椭圆"))area->setShape(PaintArea::Ellipse);}void MainWindow::on_penStyleComboBox_currentIndexChanged(QString style) //画笔风格组合框{if(style == tr("实线")){area->setPenStyle(Qt::SolidLine);}else if(style == tr("虚线")){area->setPenStyle(Qt::DotLine);}}void MainWindow::on_penWidthSpinBox_valueChanged(int width) //画笔线宽组合框{area->setPenWidth(width);}void MainWindow::on_penColorComboBox_currentIndexChanged(int index) //画笔颜色组合框{QColor color =ui->penColorComboBox->itemData(index,Qt::UserRole).value<QColor>();area->setPenColor(color);}void MainWindow::on_brushColorComboBox_currentIndexChanged(int index) //填充颜色组合框{QColor color =ui->brushColorComboBox->itemData(index,Qt::UserRole).value<QColor>(); area->setBrushColor(color);}void MainWindow::on_action_12_triggered() //关于对话框的实现{AboutDialog abdlg;abdlg.show();if(abdlg.exec()!=QDialog::Accepted)abdlg.show();}void MainWindow::on_action_2_triggered() //选择直线{area->setShape(PaintArea::Line); //利用PaintArea类中的枚举变量}void MainWindow::on_action_3_triggered() //选择无{area->setShape(PaintArea::None);}void MainWindow::on_action_9_triggered() //选择矩形{area->setShape(PaintArea::Rectangle);}void MainWindow::on_action_13_triggered() //选择椭圆{area->setShape(PaintArea::Ellipse);}void MainWindow::on_action_14_triggered() //选择实线{area->setPenStyle(Qt::SolidLine);}void MainWindow::on_action_15_triggered() //选择虚线{area->setPenStyle(Qt::DotLine);}paintarea.cpp的内容(实现双缓冲绘图并提供绘图接口的调用)#include "paintarea.h"#include <QPainter>#include <QPrintDialog>#include <QPrinter>PaintArea::PaintArea(){image = QImage(400,300,QImage::Format_RGB32); //画布的初始化大小设为400*300,使用32位颜色backColor = qRgb(255,255,255); //画布初始化背景色使用白色image.fill(backColor);modified = false;scale = 1;angle = 0;shear = 0;penColor = Qt::black;brushColor = Qt::black;penWidth = 1;penStyle = Qt::SolidLine;curShape = None;isDrawing = false;}void PaintArea::paintEvent(QPaintEvent *){QPainter painter(this);painter.scale(scale,scale);if(isDrawing) //如果正在绘制特殊图形,则显示临时绘图区上的内容{painter.drawImage(0,0,tempImage);}else{if(angle){QImage copyImage = image; //新建临时的copyImage,利用它进行旋转操作QPainter pp(&copyImage);QPointF center(copyImage.width()/2.0,copyImage.height()/2.0);pp.translate(center);pp.rotate(angle);pp.translate(-center);pp.drawImage(0,0,image);image = copyImage; //只会复制图片上的内容,不会复制坐标系统angle = 0; //完成旋转后将角度值重新设为0}if(shear){QImage copyImage = image;QPainter pp(&copyImage);pp.shear(shear,shear);pp.drawImage(0,0,image);image = copyImage;shear = 0;}painter.drawImage(0,0,image);}}void PaintArea::mousePressEvent(QMouseEvent *event){if(event->button() == Qt::LeftButton) //当鼠标左键按下{lastPoint = event->pos(); //获得鼠标指针的当前坐标作为起始坐标isDrawing = true;}}void PaintArea::mouseMoveEvent(QMouseEvent *event){if(event->buttons()&Qt::LeftButton) //如果鼠标左键按着的同时移动鼠标{endPoint = event->pos(); //获得鼠标指针的当前坐标作为终止坐标if(curShape == None) //如果不进行特殊图形绘制,则直接在image上绘制{isDrawing = false;paint(image);}else //如果绘制特殊图形,则在临时绘图区tempImage上绘制{tempImage = image; //每次绘制tempImage前用上一次image中的图片对其进行填充paint(tempImage);}}}void PaintArea::mouseReleaseEvent(QMouseEvent *event){if(event->button() == Qt::LeftButton) //如果鼠标左键释放{endPoint = event->pos();isDrawing = false;paint(image);}}void PaintArea::paint(QImage &theImage){QPainter pp(&theImage); //在theImage上绘图QPen pen = QPen();pen.setColor(penColor);pen.setStyle(penStyle);pen.setWidth(penWidth);QBrush brush = QBrush(brushColor);pp.setPen(pen);pp.setBrush(brush);int x,y,w,h;x = lastPoint.x()/scale;y = lastPoint.y()/scale;w = endPoint.x()/scale - x;h = endPoint.y()/scale - y;switch(curShape){case None:{pp.drawLine(lastPoint/scale,endPoint/scale); //由起始坐标和终止坐标绘制直线lastPoint = endPoint; //让终止坐标变为起始坐标break;}case Line:{pp.drawLine(lastPoint/scale,endPoint/scale);break;}case Rectangle:{pp.drawRect(x,y,w,h);break;}case Ellipse:{pp.drawEllipse(x,y,w,h);break;}}update(); //进行更新界面显示,可引起窗口重绘事件,重绘窗口modified = true;}void PaintArea::setImageSize(int width, int height){QImage newImage(width,height,QImage::Format_RGB32);image = newImage;update();}void PaintArea::setImageColor(QColor color){backColor = color.rgb(); //因为image的背景色要用QRgb类型的颜色,所以这里进行了一下转换image.fill(backColor);update();}bool PaintArea::saveImage(const QString &fileName, const char *fileFormat) {QImage visibleImage = image;if (visibleImage.save(fileName, fileFormat)) //实现了文件存储{modified = false;return true;}else{return false;}}bool PaintArea::openImage(const QString &fileName){QImage loadedImage;if (!loadedImage.load(fileName))return false;QSize newSize = loadedImage.size();setImageSize(newSize.width(),newSize.height());image = loadedImage;modified = false;update();return true;}QSize PaintArea::getImageSize(){return image.size()*scale;}void PaintArea::doPrint(){QPrinter printer(QPrinter::HighResolution);QPrintDialog *printDialog = new QPrintDialog(&printer, this);if (printDialog->exec() == QDialog::Accepted){QPainter painter(&printer);QRect rect = painter.viewport();QSize size = image.size();size.scale(rect.size(), Qt::KeepAspectRatio);painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); painter.setWindow(image.rect());painter.drawImage(0, 0, image);}}void PaintArea::zoomIn(){scale*=1.2;update();}void PaintArea::zoomOut(){scale/=1.2;update();}void PaintArea::zoom_1(){scale = 1;update();}void PaintArea::doRotate(){angle +=90;update();}void PaintArea::doShear(){shear = 0.2;update();}void PaintArea::doClear(){image.fill(backColor); //用现在的画布背景色进行填充update();}void PaintArea::setPenStyle(Qt::PenStyle style){penStyle = style;}void PaintArea::setPenWidth(int width){penWidth = width;}void PaintArea::setPenColor(QColor color){penColor = color;}void PaintArea::setBrushColor(QColor color){brushColor = color;}void PaintArea::setShape(ShapeType shape){curShape = shape;}五、实验步骤第一部分:设计界面一.设计菜单1.在QtCreator中新建Qt4 Gui Application工程,我这里使用的工程名为paint,使用默认的QMainWindow作为主窗口。

基于qt的游戏开发(实训报告)

基于qt的游戏开发(实训报告)

扬州市职业大学课程设计说明书设计题目:基于QT的嵌入式智能游戏开发系别:信息工程学院专业:计算机应用姓名:刘盼盼学号:120401309指导教师:梅建东完成时间:2014年6月实用文档摘要嵌入式软件软件开发是嵌入式产品开发的关键技术之一,特别是基于Linux操作系统的嵌入式软件开发,已经成为嵌入式开发的主要领域。

Qt 作为一种跨平台的图形界面开发平台,可以直接建立在简单的帧缓冲驱动上,并且有良好的可配置、可裁剪特性,因此也经常用在嵌入式系统上。

Qt支持一般图形界面系统的由事件驱动的编程模型,并且支持特有的信号与槽的编程模型,应用非常灵活。

越来越多的嵌入式终端需要一个图形化的人机借口界面(GUI),良好的人机交互界面是嵌入式系统设计的一个关键技术,尤其是嵌入式系统在消费电子领域的发展,消费者对嵌入式系统的游戏娱乐功能也越来越关注。

本文的目标是设计和实现嵌入式Linux下基于Qt的猜数字游戏的开发,程序所实现的功能是首先由计算机随机产生4个范围在0至9内的数字但是不显示给玩家,由玩家进行试猜。

当玩家输入4个数字之后,计算机进行统计,给出这4个数字与答案中4个数字相同的个数及位置也相同的个数。

玩家根据这个结果进行下一次的试猜,直到所输入的数字及数字的位置与答案完全相同为成功,或者达到规定的次数为失败。

猜数字游戏的基本功能由几个与数组相关的算法来实现,通过Qt中的QLineEdit类实现文本输入数字,使用QValidator类校验输入是否为实用文档整数并且可以限定整数的范围。

用QtGlobal库函数中的qsrand生成一个随机数来实现方块的随机出现。

用QMessageBox类实现显示对话框。

关键词:嵌入式软件软件开发;Qt4图形用户界面;猜数字游戏目录摘要..................................................................................................... I I 目录 (III)第1章绪论 (5)1.1 课题研究背景和意义 (5)1.2 嵌入式软件发展状况及未来 (7)1.2.1 标志性的嵌入式产品 (8)实用文档1.2.2 嵌入式软件技术面临挑战 (9)1.2.3 影响未来软件新技术 (10)1.3 课题研究内容 (11)第2章Linux和Qt开发环境的简介 (13)2.1 Linux操作系统的简介 (13)2.2 Linux操作系统的主要特性 (15)2.3 Qt简介 (18)2.4 Qt开发环境 (20)2.5 Qt编程机制 (22)第3章项目设计 (26)3.1 需求分析 (26)3.2 总体设计 (27)3.3 可行性分析 (28)第4章嵌入式猜数字游戏的功能实现 (30)4.1 系统功能模块的设计 (30)4.2 结构设计 (31)4.3 功能实现 (40)实用文档第5章总结和展望 (46)致谢 (47)参考文献 (48)附录(源代码) (50)第1章绪论1.1课题研究背景和意义嵌入式系统(Embedded System)可以简单定义为“以转门应用的实现为中心。

基于Linux QT的网络调试助手课设报告

基于Linux QT的网络调试助手课设报告

编号:嵌入式系统综合开发实训(论文)说明书题目:Linux下的网络调试助手学院:计算机科学与工程学院专业:计算机科学与技术学生姓名:孤狼学号:1100310315指导教师:2014年12月19日本论文主要论述了整个课程设计《Linux下的网络调试助手》的目标任务,以及完成目标任务的设计思路以及最终的解决方案和最终软件实现效果。

本文开篇引言介绍本软件的开发背景,设计这个系统是建立在什么情况下的,以及本系统能处理现实中那些事务。

在需求分析阶段,主要考虑的是本系统具体要求能处理那些现实中哪些事务,有些什么功能,考虑系统的交互性,可行性以及使用哪个开发平台。

在总体设计中,进行结构分析与流程设计。

在详细设计中,介绍软件设计中建立网络连接的Tcp_ip服务端与客户端,数据的接收和发送,字符与十六进制的转换显示,定时重复发送,获取文件数据发送和保存接受数据至文件以及接收发送字节数目的显示。

最后论述开发过程所遇问题和解决方法,软件的测试过程,使用的关键技术和软件特色,最终实现的功能效果。

关键词:Linux、网络调试助手、TCP_IP、服务端、客户端、发送、接收、UDP1.绪论 (1)1.1背景: (1)1.2研究意义: (1)2.软件概述 (1)2.1软件说明 (1)2.2功能目标 (1)3.软件需求分析 (1)3.1问题描述 (1)3.2软件的总体需求 (1)3.3软件的详细需求 (2)3.4使用环境 (2)3.5开发编程环境及语言 (2)3.6可行性分析 (2)3.7软件总体结构目标要求 (3)4.软件详细设计 (3)4.1软件总体结构 (3)4.2总体设计流程图 (4)4.3 tcp sener socket服务端设计 (5)4.4 tcp client socket客户端设计 (5)4.5 UDP设计 (5)4.6 字符与十六进制转换显示/发送设计 (5)4.7 定时发送设计 (5)4.8 接收数据保存到文件 (5)4.9 发送数据来源自文件 (5)4.10 发送和接受数据字节显示 (5)4.11数据清零 (6)4.11停止接收数据 (6)5.软件测试 (6)6 结束语 (7)6.1 总结 (7)6.2 展望 (8)谢辞 (9)参考文献 (10)1.绪论1.1背景:随着科技的蓬勃发展,嵌入式系统也得到了空前的发展应用,于此同时,很多嵌入式系统为了方便系统的调试以及适应互联网的发展与更高的用户需求,需要连接网络,网络不仅可以作为一种嵌入式系统的调试手段,也是嵌入式系统连接外界进行信息交流的一种手段。

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

程序设计课程设计实验报告(qt实验报告)信息科学与技术学院软件三班高文博2010050703092011年5月实验1:计算当初存入本金的钱数。

(12题)1.实验目的、要求目的:1)熟悉qt中的常用属性;2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等;3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功能与函数结合起来。

要求:1)掌握对控件的文本色,背景色等常用属性的设置。

2)掌握对控件、边框尺寸与结构的设置3)掌握对函数的设置2.实验设备笔记本电脑,已安装Qt 开发环境。

3.实验内容、步骤●先在vc++上进行编译。

●应用qt3.38进行编译,运行。

实验步骤:1)根据题目需求在草纸上画出结构图;2)根据草图用代码设计整体框架和控件;3)在qt上运行;4)运行成功后根据功能添加函数;5)在头文件中添加头文件。

6)将添加的功能函数与功能控件相连;7)分别对每个函数进行测试;8)将整个程序在qt运行调试;9)运行通过后给每个函数写注释;实验代码如下所示A (1)主框架结构代码#include"gwbsave.h"GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) {//??vBox=new QVBoxLayout(this);vBox->setMargin(5);vBox->setSpacing(5);label=new QLabel("Please input the lilv:",this,"label");vBox->addWidget(label);//??hBox=new QHBoxLayout(this);hBox->setMargin(5);hBox->setSpacing(5);vBox->addLayout(hBox);le1=new QLineEdit(this,"le1");hBox->addWidget(le1);//?,??hBox2=new QHBoxLayout(this);hBox2->setMargin(5);hBox2->setSpacing(5);vBox->addLayout(hBox2);leResult=new QLineEdit(this,"leResult");leResult->setReadOnly(true);leResult->setPaletteBackgroundColor(Qt::gray);hBox->addWidget(leResult);//аgrid=new QGridLayout(this,1,5,5,10);vBox->addLayout(grid);btnResult=new QPushButton("Result",this,"btnResult");grid->addWidget(btnResult,0,2);btnClean=new QPushButton("Clean",this,"btnClean");grid->addWidget(btnClean,0,3);btnExit=new QPushButton("Exit",this,"btnExit");grid->addWidget(btnExit,0,4);connect(btnExit,SIGNAL(clicked()),this,SLOT(close())); // connect(btnClean,SIGNAL(clicked()),this,SLOT(slotClean())); //? connect(btnResult,SIGNAL(clicked()),this,SLOT(slotExit()));//}(2)主窗体结构视图B(1)添加函数后的全部代码a头文件//#ifndef GWBSAVE_H#define GWBSAVE_H#include<qwidget.h>#include<qlayout.h>#include<qlineedit.h>#include<qpushbutton.h>#include<qlabel.h>#include<qdatetime.h>//class GwbSave:public QWidget{Q_OBJECTpublic:GwbSave(QWidget*parent=0,const char*name=0);//构造函数。

int i;//double t;//double n;//public slots:void slotExit();void slotClean();private:QVBoxLayout*vBox; //多级嵌套布局时,使用Layout更好QHBoxLayout*hBox; //布局算式有关的控件QHBoxLayout*hBox2;QGridLayout*grid; //布局四个按钮。

QLabel*label;QLineEdit*le1;QLineEdit*leResult;QPushButton*btnExit,*btnClean,*btnResult;//定义几个按钮。

};#endifb实现文件#include"gwbsave.h"GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) {//定义标签,输出提示语言。

vBox=new QVBoxLayout(this);vBox->setMargin(5);vBox->setSpacing(5);label=new QLabel("Please input the lilv:",this,"label");vBox->addWidget(label);//输入利率的框体。

hBox=new QHBoxLayout(this);hBox->setMargin(5);hBox->setSpacing(5);vBox->addLayout(hBox);le1=new QLineEdit(this,"le1");hBox->addWidget(le1);//输出结果的框体。

hBox2=new QHBoxLayout(this);hBox2->setMargin(5);hBox2->setSpacing(5);vBox->addLayout(hBox2);leResult=new QLineEdit(this,"leResult");leResult->setReadOnly(true);leResult->setPaletteBackgroundColor(Qt::gray);hBox->addWidget(leResult);//定义几个按钮,并实现其排布。

grid=new QGridLayout(this,1,5,5,10);vBox->addLayout(grid);btnResult=new QPushButton("Result",this,"btnResult");grid->addWidget(btnResult,0,2);btnClean=new QPushButton("Clean",this,"btnClean");grid->addWidget(btnClean,0,3);btnExit=new QPushButton("Exit",this,"btnExit");grid->addWidget(btnExit,0,4);connect(btnExit,SIGNAL(clicked()),this,SLOT(close())); //退出按钮信号链接。

connect(btnClean,SIGNAL(clicked()),this,SLOT(slotClean())); //清除按钮链接connect(btnResult,SIGNAL(clicked()),this,SLOT(slotExit()));// 结果按钮链接。

}void GwbSave::slotClean()//把字符清零的槽函数。

{le1->setText(QString::number(0));leResult->setText(QString::number(0));}void GwbSave::slotExit() //实现求应该存入多少钱的函数。

int i; double t=0; double n;n=le1->text().toDouble();for(i=0;i<5;i++)//i0-4t=(t+1000)/(1+n*12);//??leResult->setText(QString::number(t)); }C主函数#include<qapplication.h>#include"gwbsave.h"int main(int argc,char**argv){QApplication app(argc,argv);GwbSave mainWindow;mainWindow.setGeometry(100,100,250,150);app.setMainWidget(&mainWindow);mainWindow.show();return app.exec();}(2)函数功能实现视图(1)输入利率(2)点击”result”键计算出应存入本金。

(2)点击clean键结果全部清零。

(3)点击exit退出界面。

C添加的函数(1)void GwbSave::slotClean()//把字符清零的槽函数。

{le1->setText(QString::number(0));leResult->setText(QString::number(0));}(2)void GwbSave::slotExit() //实现求应该存入多少钱的函数。

相关文档
最新文档