QtQt_qt资料_20200419_150920Qt课件_第1页
QtQt_qt资料_20200419_150920Qt课件_第2页
QtQt_qt资料_20200419_150920Qt课件_第3页
QtQt_qt资料_20200419_150920Qt课件_第4页
QtQt_qt资料_20200419_150920Qt课件_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主讲人:黄攀 联系方式电子邮箱:,Qt平台下的C+编程基础,课程介绍,本课程共分为5次课程,10个学时。 通过本课程,要求掌握: 什么是Qt以及Qt信号传递机制 上位机控件设置以及控件使用方法 了解基于Qt平台的C+编程 课程结束时,将完成一个基于Qt的应用程序。,交流QQ群:275516932,课程目录,第一讲 Qt平台介绍及C+概述 第二讲 C+基本语言介绍并基于Qt编写一个计算器小程序 第三讲 基于Qt平台开始编写时钟应用程序 第四讲 Qt界面美化 第五讲 课程总结,交流课程设计,Qt应用软件介绍,三维屏保 二维动画绘图 激光陀螺上位机监测软件 车载导航系统 地

2、图绘制软件,时钟初始界面 备忘录软件 音乐播放软件 计算时间差软件 恶搞软件,什么是Qt?,Qt简介,Qt是一个跨平台的C+图形用户界面库,由挪威Troll Tech公司出品。目前产品包括Qt、基于Framebuffer的Qt Embedded、快速开发工具Qt Designer、国际化工具Qt Linguist等部分。Qt不但支持所有Unix系统,而且支持Linux,也支持Windows平台。,Qt简介,Qt是基于面向对象的C+语言,它提供了信号(signal)和槽(slot)的对象通信机制,具有可查询和可设计的属性,以及强大的事件和事件过滤器。同时,它还具有字符国际化,即支持根据上下文进行

3、国际化字符串翻译。许多Qt特性基于QObject的继承,通过标准C+技术实现。,Qt简介,Qt最初是挪威Troll Tech公司出品,后来被诺基亚公司收购,并继续Qt的研发和维护工作,诺基亚推出的塞班系统,其界面即是用Qt进行软件开发的。随着诺基亚放弃塞班系统,Qt团队于今年解散,随之而来的于2012年8月9日被芬兰IT业务供应商Digia收购并继续维护。 基于Linux系统的的ARM平台,在开发其应用界面时,通常使用Qt开发界面及应用程序。,Qt特征,跨平台性 面向对象 组件间的相互通信 用户自定义,国际化 丰富的API函数 可用户化的外观 优越的绘画功能 绘制2D/3D图形功能,Qt作为新

4、型的GUI开发工具,具有与一般的工具包所不同的特征,使它的应用非常广泛。,常用的Qt类,Qt能干什么?,Qt应用,工程上位机软件 电脑应用软件 手机应用软件 嵌入式系统平台及软件 游戏软件,上位机软件介绍,上位机指计算机人机界面部分,与下位机通信,可对下位机系统进行监控和维护。 常用的上位机编程软件主要有:MFC,LabView,Qt,西门子WinCC,组态王等。 上位机常用的接口:RS232、RS485、以太网接口。,上位机软件介绍,电脑应用软件,手机应用软件,娱乐软件,应用软件,教学软件,教学软件,三维图形显示,三维图形显示,二维图形显示,游戏软件,如何安装Qt开发平台?,Qt安装过程,W

5、indows系统安装,一键安装,方便快捷!,Qt安装过程,Qt安装过程,Qt安装过程,Qt安装过程,如何在Qt平台下 开发应用程序?,Qt程序开发基础,练习一个!,C语言基础知识,数据类型,C语言数据类型,整型 100,125,-100,0 实型 3.14 , 0.125,-3.789 字符型 a, b,2 字符串 a, ab,1232,变量,变量与数据类型相关,设置什么类型的变量,就需要在使用时候付给什么类型的数值。 例如:,int add1 = 1; double pi = 3.1415926; char ch1 = a; Bool flag = 0;,C语言基础,C语言是国际上广泛流行的

6、高级语言,#include void main( ) printf (This is a C program.n); ,说明: main-主函数名, void-函数类型 每个C程序必须有一个主函数main 是函数开始和结束的标志,不可省 每个C语句以分号结束 使用标准库函数时应在程序开头一行写: #include ,C语言基础,例 求两数之和#include void main( ) /*求两数之和*/ int a,b,sum; /*声明,定义变量为整型*/ /*以下3行为C语句 */ a=123; b=456; sum=a+b; printf(sum is %dn,sum);,说明: /*/

7、表示注释。注释只是给人看的,对编译和运行不起作用。所以可以用汉字或英文字符表示,可以出现在一行中的最右侧,也可以单独成为一行。,C语言基础,常用语句:赋值语句、循环语句、判断语句,C语言介绍,C语言特点: (1)语言简洁、紧凑、使用方便 (2)丰富的运算符和数据类型 (3)直接访问内存,进行位操作,胜任操作系统的开发 (4)生成的目标代码质量高,程序运行效率好 (5)可移植性好 C语言局限: 没有支持代码重用的语言结构 程序达到一定规模时,程序员难以控制程序的复杂性。,C+简介,C+是C的改进与扩充 C+包括C的全部属性、特征、优点,是在C的基础上的改进与扩充 C+是C语言改进的基础上,添加了

8、对面向对象程序设计部分的支持 C+包括过程性语言和类部分 C+是C的超集,C是C+的子集 C+是混合型语言,即是过程型的,又是面向对象型的,C语言与C+区别,C语言是一种面向过程的编程语言 C语言主要用于实现小型程序 面向过程是面向对象的基础,C+是面向对象的编程语言 C+通常用于实现大型程序 面向对象会大大方便编程人员,较少重复性的工作,第一讲到此结束!,第二讲 C+基础及Qt实战!,C+语言基础,类是一种可以作为交易的概念代码类是自定义的数据类型类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样. 类机制 要通过编程的方法来维护类的数据表达,值范围和操作并不是简单的,因为

9、要限制一些操作只能让类自己来做,以免发生问题时,无人敢对其负责 类机制就是通过语言的规定性来实现一些技术,使类具有数据封装,信息屏蔽,多态等特征,起到数据类型的作用,而达到方便编程的目的.,C+语言基础,C+提供了一种类class机制,不但可以定义数据的复合,还可以定义该复合数据的操作,将工作分为工作目标和内容,从而便于编程。 类机制定义类class,类是一种类型type,定义类的格式与struct相像,只是在定义体中添上操作,操作是一个个的功能,由函数形式表示。,C+语言基础,面向对象程序设计 Object-Oriented Programming,自行车对象,数据抽象,自行车类,属性:架子

10、尺寸 车轮尺寸 颜色 原材料 操作:转弯 移动 修理,C+语言基础,面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存,不可分割的整体来处理,即对象。 它采用数据抽象和信息隐藏技术。 它将对象及对象的操作抽象成一种新的数据类型类,并且考虑不同对象之间的联系和对象类的重要性。,C+语言基础,/类的定义 class 类名 私有的数据和成员函数; private: 私有的数据和成员函数; public: 公有的数据和成员函数; protected: 保护的数据和成员函数; ;,C+语言基础,1.) public members : 被定义为public members 的成员函数及 成员

11、变量 , 可在任何的函数中被使用 . 包括main函数,及其它非成员函数.,C+语言基础,2.) private members : 被定义为private members 的成员函数及成员变量 , 只能在成员函数中被使用 . 3) protected members: 被保护的成员函数及成员变量,Qt中会使用的成员变量,是一种特使应用下的成员函数及变量。,C+语言基础,class Date int year, month, day; public: void set(int y,int m,int d); / 赋值操作 bool isLeapYear(); / 判断闰年 void print

12、(); / 输出日期 ;,除了将关键字struct换成class外,其定义体中,既含有用整型表示的复合年、月、日数据,它们是类的数据组成部分,所以被称为数据成员,也含有对年、月、日的操作,有设置年、月、日的set操作,有判断是否闰年的isLeapYear操作,还有显示日期的print操作,它们都是函数声明的形式,由一个关键字public引导,表示这些操作可以提供给外界公用,因为这些操作从属于一个类,所以是类的成员,这些操作称为成员函数。,/成员变量、成员函数 /构造函数 class complex public: float real, image; complex(float r, floa

13、t i) real = r; image = i; ; complex( ) ; complex,成员函数在类外部定义时,在函数名称前应加上日期类型名前缀Date和名空间引导符“:”,它表示着自己属于某一个名空间(类),与普通函数相区别。,成员函数在类外部定义时,在函数名称前应加上日期类型名前缀Date和名空间引导符“:”,它表示着自己属于某一个名空间(类),与普通函数相区别。,成员函数与普通函数的区别: 成员函数属于类, 成员函数定义是类设计的一部分, 其作用域是类作用域. 而普通函数一般为全局函数 成员函数的操作主体是对象,使用时通过捆绑对象来行使其职责, 而普通函数被调用时没有操作主体,

14、/成员变量、成员函数 /构造函数 class complex public: float real, image; complex(float r, float i) real = r; image = i; ; complex( ) ; complex,/构造函数、析构函数 class list public: int len; int listsize; int *data; list( )data = new int80; list( )delete data; int resize(int s); /当存储空间不足时增加 ;,函数定义体的花括号对的后面是没有分号的,而类定义体的花括号对

15、的后面是有分号的。原因是因为class机制是自定义类型的机制,是在struct的语法基础上改建的,必须和struct对应,所以存在着分号。,类定义作用域: 从类定义结束开始,到从外面包围类定义的块结束(若类定义外无包围块,则结束于文件) 使用类的程序员在类定义作用域下编程 类定义作用域为包含类定义的花括号语句块,如果没有花括号语句块,则为从类定义开始的全部代码空间,如:,class A() / ; /A类定义作用域 void f() class B / ;/B类定义作用域范围 /B类定义作用域到此为止 /文件到此为止(A类定义作用域到此为止),类作用域: 类定义内部及成员函数定义内部 实现类的

16、程序员在类作用域下编程 类作用域中,类的成员函数对数据成员和其他成员函数具有无限制的访问权。,函数,函数是一种关系,这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。 在C语言里,可将函数定义为可以实现相关功能的程序模块。,函数举例,一个简单的函数 Int FunforAdd(int a,int b) int c = a+b; return c; ,C+算法,算法是程序的灵魂! 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出

17、。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。,算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。,算法应该具有的特点,1、有穷性(Finiteness) 算法的有穷性是指算法必须能在执行有限个步骤之后终止 2、确切性(Definiteness) 算法的每一步骤必须有确切的定义; 3、输入项(Input) 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; 4、输出项(Output),一个算法有一个或多个输出,

18、以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5、可行性(Effectiveness) 算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性); 6、 高效性(High efficiency) 执行速度快,占用资源少; 7、 健壮性(Robustness) 对数据响应正确。,试着构想如下问题的算法,计算1+2+3+4+5+1000 计算1+2+3+任意值 计算1/1+1/2+1/3+1/4+1/100 找出100个数字中的最大数,数据源data100 计算从2000年1月1日0时到任意一天中间有多少天?,Qt实战,编写一

19、个能够实现加减乘除计算的Qt应用程序。,第二讲到此结束!,第三讲 Qt实战,Qt工程创建,创建工程,同样可以创建工程,选择工程类型,基于C+开发的工程,Qt图形界面应用工程,定义工程路径,该名称不是工程名称,只是文件夹名称,工程文件夹路径,工程名称及类型,类名称,也是工程名,基于什么类创建,将根据定义的工程名自动改,Qt实战,新建一个Qt工程,可看到生成了以下几个文件:*.pro,*.ui,*.h,*.cpp,main.cpp。,Main文件,Main文件,程序执行的入口文件,如设置自动生成ui窗口,则main文件中包含该窗口的现实过程,并可对窗口进行设置。如设置窗口大小,设置窗口最大化最小化

20、控件等。,Main文件,首先定义了一个应用程序的实例a(application的缩写),然后定义窗口,显示窗口,进入事件循环。,int main(int argc, char *argv) QApplication a(argc, argv); clock w; w.show(); return a.exec(); ,*.h文件,工程文件的头文件,首先声明并定义了头文件,其格式为:,#ifndef CLOCK_H #define CLOCK_H #endif,头文件中要定义文件类,如下所示:,namespace Ui class clock; ,*.h文件,Q_OBJECT为程序必须包含的一个

21、宏,该宏表示如果在你的程序中用到信号和槽机制,或者用到国际化等方面的应用,则必须用到这个宏。同时,该宏必须在该类下声明。即:,class clock : public QDialog Q_OBJECT ;,*.h文件,头文件中还必须包含程序构造函数以及析构函数的声明,用来对程序运行和退出进行操作。,class clock : public QDialog public: explicit clock(QWidget *parent = 0); clock(); private: Ui:clock *ui; ;,*.cpp文件,Cpp文件是程序中函数的具体实现过程的函数。其默认的部分包括以下几部

22、分: 包含头工程头文件及ui头文件,#include clock.h #include ui_clock.h,*.cpp文件,构造函数及析构函数,clock:clock(QWidget *parent) : QDialog(parent), ui(new Ui:clock) ui-setupUi(this); clock:clock() delete ui; ,开始工程实现,Qt算法实战篇,请利用前两次课的知识,基于Qt编写以下两个程序,了解开发一个Qt应用程序的基本步骤 1、编写一个乘法计算器,要求能够输入任意两个数(整型或浮点型),能够计算出两数相乘的结果。 2、找出1到10000以内能被

23、n整除且不能被m整除的所有整数个数。(n和m可通过窗口自行设定,即输入设定),Qt绘图,Qt通过Qpainter类实现绘图功能,通过绘图事件paingEvent完成具体绘图操作。如下函数所示:,void Dialog:paintEvent(QPaintEvent *) QPainter painter(this); painter.drawLine(0,0,100,100); ,Qt二维绘图,Qt提供了大量方便的绘图功能,如绘制直线,方框,半圆,椭圆等图形。,The QPainter class performs low-level painting on widgets and other

24、paint devices. QPainter provides highly optimized functions to do most of the drawing GUI programs require. It can draw everything from simple lines to complex shapes like pies and chords. It can also draw aligned text and pixmaps. Normally, it draws in a natural coordinate system, but it can also d

25、o view and world transformation. QPainter can operate on any object that inherits theQPaintDeviceclass.,The common use of QPainter is inside a widgets paint event: Construct and customize (e.g. set the pen or the brush) the painter. Then draw. Remember to destroy the QPainter object after drawing. For example:,void SimpleExampleWidget:paintEvent(QPaintEvent *) QPainter painter(this); painter.setPen(Qt:blue); painter.setFont(QFont(Arial, 30); painter.drawText(rect(), Qt:AlignCenter, Qt); ,绘制直线和圆,创建QPainter 类对象,用其实现绘图操作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论