




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Qt4图形设计与嵌入式开发,学习内容: 一、QT入门 二、C+基础学习 三、QT编程,一、QT入门,1、什么是Qt 2、为什么选择Qt 3、Qt史 4、Qt工具,1、什么是QT Qt是Trolltech公司开发的给予标准框架的图形应用程序,它是一种高校与跨平台的应用程序的解决方案;Qt是一个功能全面、可开发性能高的、多平台的、C+图形用户界面应用程序框架。有时又被称为C+部件工具箱。Qt支持的平台有微软操作系统、苹果机OS以及Linux操作系统,并支持了大部分商业的UNIX操作系统和Linux嵌入式操作系统。 其实,Qt就是基于C+语言上的一种专门用来开发GUI界面的程序。,2、为什么选择Qt Qt是基于C+的一种语言: Qt可以被称作是C+的延伸,Qt中有数百个类都是用C+写出来的,也就是说Qt本身具有了C+的快速、简易、面向对象等无数优点。 GUI工具包(或GUI库)是构造图形用户界面(程序)所使用的一套按钮、滚动条、菜单和其他对象的集合。在嵌入式Linux系统下有很多图形界面系统GUI库,其中之一就是Qt库,一个基于C+语言的工具包。由于Qt是基于C+(而不是C),速度快,易于使用。 Qt具有非常好的可移植性: 使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。 Qt不只适用与Linux,它同样适用于Windows,Qt是最佳的选择。,3、QT史: 在1992年,一批Qt的程序员就开始编写Qt程序,直到1994年Trolltech(奇趣)公司成立,该公司提供所有的有关Qt的服务;1996年Qt进入商业领域,他已经成为全世界应用程序基础开发的重要角色。Qt也是流行Linux桌面的KDE环境的基础,KDE是所有主要LInux发行版的一个标准组件。 Trolltech主要为诸如eBay公司的Skype、Google Earth和Adobe Systems的Photoshop Elements提供软件和应用程序平台,在2008年初Trolltech公司被移动电话巨头诺基亚公司接手。 诺基亚公司作为全球最大的移动电话制造商,在召开的关于对Trolltech的新闻发布会上表示将继续支持公司进行无线设备和电脑系统的研发,同时还包括网络设备。,4、QT工具: Qt Creator: 一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。 Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C+代码编辑器、上下文感知帮助系统、可视化调试器、源代码管理、项目和构建管理工具。 QT Designer: 简单的来说 QT Designer 是一个 GUI 的工具. 这个工具可以帮助我们来加快写 QT 程式的速度. 利用 QT Designer 可以用一种所见既所得的方式,来产生 QT 程式的 GUI 介面的程式码. 通过增加一些功能,就可以完成一个程式了.利用 QT Designer 可以非常快速的学会 QT。,Qt/Embedded,Qt是KDE等项目使用的GUI支持库 Qt/Embedded是面向嵌入式系统的Qt版本 许多基于X Windws程序可以非常方便地移植到Qt/Embedded版本上 Qtopia是一个用于PDA,掌上电脑和网络应用产品的移动设备窗口环境和应用套件,它基于Qt/Embedded,包括PIM应用程序,Internet客户端,娱乐和游戏程序,Qtopia/PDA可以使用商业版权或开源协议,但Qtoia Phone Edition 只能用于商业,二、C+基础学习,1、从C到C+ 2、面向对象程序设计 3、构造函数与析构函数 4、面向对象的三个基本特征,1、从C到C+: 1970年,AT&T的Bell实验室的D.Ritchie和K.Thompson共同发明了C语言 1979年,Bjarne Stroustrup到了Bell实验室,开始从事将C改良为带类的C(C with classes)的工作。 1983年该语言被正式命名为C+。,C+对C的“增强”表现为: 1、C+是在C的基础上发展而来,增加了面向对象。 2、C+对C的继承是青出于蓝而胜于蓝。 3、C+支持两种程序设计方法: 结构化程序设计的思想:功能分解,并逐步求精。 面向对象程序设计的本质:把数据和处理数据的过程看成一个整体对象。,2、面向对象程序设计 面向对象就是在编程过程中采用的封装、继承、多态的编程方法。 基本概念: (1)对象:对象是用来描述客观世界中的实体的单位。 例如:桌子、计算机、房子、教师、学生、会议、规划等等。 每一个对象都有:属性、操作。 例如:某个三角形,属性:三边长为6、9、8,方法:求周长、求面积。,(2)类 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。 类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。 在C语言中,结构体是可以包含其他类型数据的自定义数据类型,C语言中的结构体只能有自定义的数据类型,不允许有函数。而在C+中对结构体进行了扩展,它可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承。,类与对象之间的关系: 在 C+ 中对象的类型称为类 (class)。类代表了某一批对象的共性和特征。 对象与类之间的关系如同一般程序设计语言中变量与变量类型之间的关系一样。前面已说明:类是对象的抽象,而对象是类的具体实例。 正如同结构体类型和结构体变量的关系一样,人们先声明一个结构体类型,然后用它去定义结构体变量。同一个结构体类型可以定义出多个不同的结构体变量。 在 C+中也是先声明一个类类型,然后用它去定义 若干个同类型的对象。对象就是类类型的一个变量。,(3)定义类类型 在C+中定义一个类类型和定义一个结构体类型是相似的。 下面是定义一个结构体类型的方法: struct Human / 声明了一个名为 Human的结构体类型 int age; char name20; char sex; ; Human hm1,hm2; / 定义了两个结构体变量 hm1和 hm2,定义一个类: class Human /定义一个名为Human的类 private: /以下部分为私有的成员变量 int age; char name20; char sex; public: /以下部分为公有的成员函数 void CanSay(); void CanWalk(); ; Human hm1,hm2;/定义了两个Human类的对象,其中public和private关键字称成员访问限定符。还有一种成员访问限定符是protected(受保护的); protected:受保护的成员,不能被类外访问,但可以被派生类的成员函数访问。 public:类里类外均可访问。 private:类里访问。 如果在类体中既不写关键字private,也不写public,就默认为protected。,一般来说,对象的定义在main函数中,而类的定义在函数外。 类对象对成员的引用方法: (1)对象名.成员名。 (2)对象名.成员函数名。 类对象引用: 结构体变量引用: class Human /Human类 struct Human /Human结构体 Human hm; /定义类对象 Human hm; /定义结构体变量 hm.age; hm.age; hm.CanSay(); 一个求长方形面积的C+例子:,class area private: int x; int y; public: void init(int a,int b); void print(); int areas(); void area:init(int a,int b) x=a; y=b; int area:areas(), int z; z=x*y; return z; void area:print() coutxy; A.init(x,y); A.print(); ,注:area:print()中的:为限定符,表示成员函数是属于area类的。,3、构造函数与析构函数 构造函数是一种特殊的成员函数,主要用来在创建对象时初始化对象。该函数必须与类名相同,无返回,函数体可写在类外也可写在类内。 在类体中不允许对所定义的成员变量进行初始化,C+中提供了一个好的方法:在类中用一个构造函数来初始化需要的成员变量。 在C+中,构造函数是一个在构建对象的时候自动调用的特殊的成员函数。使用构造函数的目的就是对对象进行初始化的工作,从而使对象陪使用之前可以处于一种合理的状态。,析构函数: 在构造函数中可以初始化对象的某些成员变量,系统为其分配了资源,当这个对象生存周期结束时,就需要回收对象中无用的资源,这就用到了析构函数。析构函数的功能就是回收对象的无用资源。析构函数是被自动调用的。 析构函数的表示:类名(); 如果一个对象是使用new运算符被动态创建的,则用delete运算符释放它时,delete会自动调用析构函数。,class person public: person(int id) /构造函数 person();/析构函数 void print(); private: int i; ; int main() person x(1),y(2); cout“person object x.i“; x.print(); cout“person object y.i“; y.print(); ,void person:print() coutiendl; person:person(int id) i=id; cout“person object“i“initalized“endl; person:person() cout“person object“i“distory“n“; ,程序运行结果: person object1 initalized person object2 initalized person object x.i1 person object y.i2 person object2 distory person object1 distory,4、面向对象的三个基本特征 (1)继承 面向对象编程语言的一个主要功能就是“继承”。继承是指:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。,class parent protected: int x; public: void setx() x=0; void display() cout“x=“xendl; ; class son : public parent public: void increase() x+; ;,void main() son s; s.setx(); s.increase(); s.display(); 运行结果: x=1,(2)封装 就是把一个或者一些功能通过函数、类的方式封装起来,对外只提供一个简单的接口, 调用者不需要知道函数内部如何实现的,只需要知道这个函数或者类提供什么功能。 封装的目的就是实现信息的隐蔽和局部化,使得代码模块化。 功能的处理不再方法与方法调用,而是对象与对象的交互。,(3)多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖:是指子类重新定义父类的虚函数的做法。 重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。,三、QT编程,1、创建对象和访问方法 2、元对象系统 3、信号与槽,Qt包括一组丰富的提供图形界面功能支持的窗口部件(Windows术语叫控件)。Qt也采用了一种全新并且可选的被称为“信号与槽”的对象间通信机制,以代替老的,不安全的回调技术。Qt也提供传统的事件模型用以处理诸如鼠标点击、击键等动作。Qt的跨平台GUI程序能使用现代程序要求的各种用户界面,比如菜单,背景菜单,拖拽与放下,工具栏等。 窗口部件是QWidget或其子类的实例。 一个窗口部件可包含任意数量的子部件。子部件在父部件的区域内显示。通过自动或手动的使用布局管理器可以设定子部件在父部件区域中的位置。,1、创建对象和访问方法 Qt是一个类库,创建它所提供的类对象为对象指针。 使用QPushButton(按钮)类创建对象过程: 1、声明一个对象指针(在类体中) QPushButton *button; 2、为对象分配实体(在构造函数中初始化) button = new QPushButton; 说明:声明对象button后,button的内存中还没有任何数据,这时的button称为一个空对象。空对象不能使用,因为它还没有得到任何“实体”,必须再进行为对象分配内存的步骤,即为对象分配实体。,2、元对象系统 Qt中的元对象系统是用来处理对象间通信的信号/槽机制、运行时的类型信息和动态属性系统,它基于QObject类、类声明中的Q_OBJECT宏和元对象编译器moc 是一个C+扩展,使得QT更适合真正的组件GUI编程 使用元编译器moc产生能被标准C+编译器访问的附加C+代码 带有moc预编译器的C+基本上提供了面向对象的灵活性,并保持了C+的执行效率和扩展性,3、信号与槽 Qt部件与用户的交互方式不同于其他GUI工具包。用户交互是所有GUI应用程序关心的问题。通过将某种用户事件(如点击鼠标)与程序事件(例如程序退出)联系起来,使用户能够在图形界面中只使用鼠标来控制程序。 通过Qt特有的两个功能:信号与槽方法,只需要一行代码就能将用户事件和程序事件联系起来。,槽(slot): 槽式标准的成员函数。但是,它们增加了一些特殊的功能使它们能够连接到信号。每当槽所连接的信号被发射时,槽(函数)就被执行。在创建自己的槽是,实际是编写一个普通的成员函数。 信号(signal): 信号也是成员函数,当对象内部发生某些事件时,他能够发出信号。如果这个信号连接到槽,那么那个槽(函数)就被执行。可以将多个槽函数链接到同一个信号,那么这些槽就将一个接一个地被执行,其执行顺序是任意的。,Signal和Slot的声明(1/2),在Qt程序设计中,凡是包含signal和slot的类中都要加上Q_OBJECT的定义 class Student : public QObject Q_OBJECT public: Student() myMark = 0; int mark() const return myMark; public slots: void setMark(int newMark); signals: void markChanged(int newMark
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教部编版 (五四制)5 草船借箭教学设计
- 九年级语文上册 第五单元 20 香菱学诗教学设计 (新版)新人教版
- 人教A版 (2019)必修 第二册7.3 复数的三角表示教学设计及反思
- 人教部编版九年级下册十五从军征教案及反思
- 二年级上册美术教学设计-17 纸线绳小浮雕-苏少版
- 安装设备安全培训
- 优化班级小组建设的16个策略
- 人教部编版17 难忘的泼水节教学设计及反思
- 人教版七年级上册第二单元 第一课大洲和大洋教学设计6
- 2024云南省有色地质局三0八队下属企业招聘24人笔试参考题库附带答案详解
- 湖北省武汉市2025届高中毕业生四月调研考试语文试卷及答案(武汉四调)
- 分娩镇痛后护理
- 2025年河南交通职业技术学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- 实践基地挂牌协议书
- 2025年上海高考语文三轮复习之默写
- 数学-河南省湘豫名校联考2024-2025学年高三下学期春季学期第二次模拟考试(湘豫二模)试题和答案
- 多媒体应用设计师技能考核试题试题及答案
- 2024-2025学年浙江省宁波市东钱湖九校初三5月小二调考英语试题含答案
- 中央2025年中国残联直属单位招聘26人笔试历年参考题库附带答案详解
- 常用审计技术和方法试题及答案
- 入职新华书店试题及答案
评论
0/150
提交评论