Qt4图形设计与嵌入式开发.ppt_第1页
Qt4图形设计与嵌入式开发.ppt_第2页
Qt4图形设计与嵌入式开发.ppt_第3页
Qt4图形设计与嵌入式开发.ppt_第4页
Qt4图形设计与嵌入式开发.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

Qt4图形设计与嵌入式开发,学习内容:一、QT入门二、C+基础学习三、QT编程,一、QT入门,1、什么是Qt2、为什么选择Qt3、Qt史4、Qt工具,1、什么是QTQt是Trolltech公司开发的给予标准框架的图形应用程序,它是一种高校与跨平台的应用程序的解决方案;Qt是一个功能全面、可开发性能高的、多平台的、C+图形用户界面应用程序框架。有时又被称为C+部件工具箱。Qt支持的平台有微软操作系统、苹果机OS以及Linux操作系统,并支持了大部分商业的UNIX操作系统和Linux嵌入式操作系统。其实,Qt就是基于C+语言上的一种专门用来开发GUI界面的程序。,2、为什么选择QtQt是基于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、GoogleEarth和AdobeSystems的PhotoshopElements提供软件和应用程序平台,在2008年初Trolltech公司被移动电话巨头诺基亚公司接手。诺基亚公司作为全球最大的移动电话制造商,在召开的关于对Trolltech的新闻发布会上表示将继续支持公司进行无线设备和电脑系统的研发,同时还包括网络设备。,4、QT工具:QtCreator:一个用于Qt开发的轻量级跨平台集成开发环境。QtCreator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。QtCreator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C+代码编辑器、上下文感知帮助系统、可视化调试器、源代码管理、项目和构建管理工具。QTDesigner:简单的来说QTDesigner是一个GUI的工具.这个工具可以帮助我们来加快写QT程式的速度.利用QTDesigner可以用一种所见既所得的方式,来产生QT程式的GUI介面的程式码.通过增加一些功能,就可以完成一个程式了.利用QTDesigner可以非常快速的学会QT。,Qt/Embedded,Qt是KDE等项目使用的GUI支持库Qt/Embedded是面向嵌入式系统的Qt版本许多基于XWindws程序可以非常方便地移植到Qt/Embedded版本上Qtopia是一个用于PDA,掌上电脑和网络应用产品的移动设备窗口环境和应用套件,它基于Qt/Embedded,包括PIM应用程序,Internet客户端,娱乐和游戏程序,Qtopia/PDA可以使用商业版权或开源协议,但QtoiaPhoneEdition只能用于商业,二、C+基础学习,1、从C到C+2、面向对象程序设计3、构造函数与析构函数4、面向对象的三个基本特征,1、从C到C+:1970年,ATcharname20;charsex;Humanhm1,hm2;/定义了两个结构体变量hm1和hm2,定义一个类:classHuman/定义一个名为Human的类private:/以下部分为私有的成员变量intage;charname20;charsex;public:/以下部分为公有的成员函数voidCanSay();voidCanWalk();;Humanhm1,hm2;/定义了两个Human类的对象,其中public和private关键字称成员访问限定符。还有一种成员访问限定符是protected(受保护的);protected:受保护的成员,不能被类外访问,但可以被派生类的成员函数访问。public:类里类外均可访问。private:类里访问。如果在类体中既不写关键字private,也不写public,就默认为protected。,一般来说,对象的定义在main函数中,而类的定义在函数外。类对象对成员的引用方法:(1)对象名.成员名。(2)对象名.成员函数名。类对象引用:结构体变量引用:classHuman/Human类structHuman/Human结构体Humanhm;/定义类对象Humanhm;/定义结构体变量hm.age;hm.age;hm.CanSay();一个求长方形面积的C+例子:,classareaprivate:intx;inty;public:voidinit(inta,intb);voidprint();intareas();voidarea:init(inta,intb)x=a;y=b;intarea:areas(),intz;z=x*y;returnz;voidarea:print()coutxy;A.init(x,y);A.print();,注:area:print()中的:为限定符,表示成员函数是属于area类的。,3、构造函数与析构函数构造函数是一种特殊的成员函数,主要用来在创建对象时初始化对象。该函数必须与类名相同,无返回,函数体可写在类外也可写在类内。在类体中不允许对所定义的成员变量进行初始化,C+中提供了一个好的方法:在类中用一个构造函数来初始化需要的成员变量。在C+中,构造函数是一个在构建对象的时候自动调用的特殊的成员函数。使用构造函数的目的就是对对象进行初始化的工作,从而使对象陪使用之前可以处于一种合理的状态。,析构函数:在构造函数中可以初始化对象的某些成员变量,系统为其分配了资源,当这个对象生存周期结束时,就需要回收对象中无用的资源,这就用到了析构函数。析构函数的功能就是回收对象的无用资源。析构函数是被自动调用的。析构函数的表示:类名();如果一个对象是使用new运算符被动态创建的,则用delete运算符释放它时,delete会自动调用析构函数。,classpersonpublic:person(intid)/构造函数person();/析构函数voidprint();private:inti;intmain()personx(1),y(2);coutpersonobjectx.i;x.print();coutpersonobjecty.i;y.print();,voidperson:print()coutiendl;person:person(intid)i=id;coutpersonobjectiinitalizedendl;person:person()coutpersonobjectidistoryn;,程序运行结果:personobject1initalizedpersonobject2initalizedpersonobjectx.i1personobjecty.i2personobject2distorypersonobject1distory,4、面向对象的三个基本特征(1)继承面向对象编程语言的一个主要功能就是“继承”。继承是指:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。在某些OOP语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。,classparentprotected:intx;public:voidsetx()x=0;voiddisplay()coutx=xendl;classson:publicparentpublic:voidincrease()x+;,voidmain()sons;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=newQPushButton;说明:声明对象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的定义classStudent:publicQObjectQ_OBJECTpublic:Student()myMark=0;intmark()constreturnmyMark;publicslots:voidsetMark(intnewMark);signals:voidmarkChanged(intnewMark);private:intmyMark;,Signal和Slot的声明(2/2),signal的发出一般在事件的处理函数中,利用emit发出signal,在下面的例子中在在事件处理结束后发出signalvoidStudent:setMark(intnewMark)if(newMark!=myMark)myMark=newMark;emitmarkChanged(myMark);,Signal和Slot的连接(1/2),在signal和slot声明以后,需要使用connect()函数将它们连接起来。connect()函数属于QObject类的成员函数,它能够连接signal和slot,也可以用来连接signal和signal,函数原形如下:boolQObject:connect(constQObject*sender,constchar

温馨提示

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

评论

0/150

提交评论