




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+QtGUI编程基础,戴洪均2013-5-30,主要内容,起源与发展,起源,起源与发展,简介Qt是挪威Trolltech(奇趣科技)公司开发的跨平台C+图形用户界面应用程序开发工具。宗旨它的设计目标是:“一次编写,随处编译”。只需要编写一次代码,就可以在不同的系统平台上编译并生成图形用户界面应用程序。,起源,起源与发展,创始人Qt最初是由HaavardNord(哈瓦德,奇趣CEO)和EirikChambe-Eng(埃里克,奇趣总裁)开发的。他们都在挪威科技学院获得计算机硕士学位。Qt框架首度为公众可用是在1995年5月。1995年,与挪威的Metis公司签订了第一份基于Qt的软件开发合同。,起源,起源与发展,HaavardNord,EirikChambe-Eng,大事记,起源与发展,1990年Haavard和Eirik因为一个超声波图像方面的C+数据库系统而聚在一起工作。这个系统需要一个能在Unix,Macintosh和Windows上都能运行的图形用户界面。1991年他们合作设计编写了之后成为Qt的那些类。在随后一年,Eirik提出了信号-槽机制。1993年开发了Qt的第一个图形内核程序,并用它们实现了一些窗口部件。,大事记,起源与发展,1994年创立“QuasarTechnologies”公司,后来改名为“Trolltech”(奇趣科技)。1995年与挪威的Metis公司签订了第一份基于Qt的软件开发合同。1996年在MatthiasEttrich(马蒂亚斯)的带领下KDE项目创立。之后一年,Matthias决定用Qt开发KDE,使得Qt成为Linux环境下开发C+图形用户界面的事实标准。,大事记,起源与发展,KDE与MatthiasEttrich,KDE,(KDesktopEnviroment)K桌面环境的缩写。它是一个运行于Linux、Unix以及FreeBSD等操作系统上的桌面图形界面系统。整个系统都是采用奇趣公司的Qt程序库开发的。项目的发起人是马蒂亚斯埃特里希。,MatthiasEttrich,大事记,起源与发展,2008年Nokia从Trolltech公司收购Qt。2011年Digia(芬兰IT服务公司)从Nokia收购了Qt的商业版权。Nokia负责的Qt-on-Mobile和QtCommercial由Digia接手。2012年Nokia宣布将Qt软件业务出售给Digia。,版本与授权,起源与发展,1996年,Qt1.0正式发布1999年,Qt2.0发布2001年,Qt3.0发布2005年,Qt4.0发布包含大约500多个类和9000多个函数。Qt4比以往的任何一个版本都要全面和丰富。2012年12月,Qt5Alpha发布。与Qt4相比,Qt5在内部架构上发生了很大的变化。最新官方发布版本是Qt5.0.2,最新开发发布版本是Qt5.1.0-beta1。开源版本(GPL协议)和商业版本,开发平台与编译器,起源与发展,Qt4.x支持的平台桌面系统Windows,Unix,Linux/X11,MacOSX嵌入式系统EmbeddedLinux移动终端系统Symbian,Qt5.0.x支持Android的开发。Qt5.1Beta支持IOS和Android应用程序的开发。,Windows:MSVCLinux/X11:GCCMacOSX:Clang,编译器,图1,基本技术,面向对象,基本技术,Qt是C+的扩展Qt与C+不同的特征是用C+开发出来的。QtCore和QtGuiQtCore和QtGui是Qt的两个核心组成模块,每个模块分别包含大量的Qt类。QtCore包含的类实现了Qt的非图形用户界面(non-GUI)功能,所有其他的Qt模块都依赖于此模块。QtGui在QtCore的基础上实现了Qt的图形用户界面功能,定义了所有图形用户界面(GUI)类。,面向对象,基本技术,Qt独有的特性:对象间无缝通信机制:信号和槽技术(signal-slot)强大的事件和事件滤波器(eventsandeventfilters)可查询和设计的对象属性(objectproperties)层次化的可查询对象树(objecttrees)间隔驱动的定时器(intervaldriventimers)智能指针(QPointers)国际化(internatioanlization),面向对象,基本技术,Qt独有特性的实现一部分是通过Qt元对象系统(Meta-ObjectSystem)和元对象编译器(Meta-ObjectCompiler)实现的。另一部分是通过继承QObject类用C+实现的。元对象系统和元对象编译器是Qt对C+的扩充。用纯C+实现,能使Qt更适合于组件GUI编程。,信号与槽(signal-slot),基本技术,图2,标准Qt对象图2是一个最简单的Qt类。要支持信号和槽,任意自定义类要继承QObject类,并在类定义体内声明Q_Object宏。元对象系统通过QObject和Q_OBJECT宏实现信号和槽:,信号与槽(signal-slot),基本技术,Q_OBJECT宏和QObject继承Q_OBJECT宏声明了每个QObject子类必需的内省函数,如metaObject()、qt_metaCall(),以及其他一些函数。Qt的元系统编译器编译自动生成Q_OBJECT声明的函数和信号的实现QObject成员函数,如connect()、disconnect()使用这些内省函数完成信号和槽的工作。上述过程由元系统编译器和QObject自动处理,程序员不需要考虑。,信号与槽(signal-slot),基本技术,如何使用信号与槽的使用非常简单和灵活。以图3为例,Object1、Object2、Object3和Object4是QObject的派生类对象,实线表示信号-槽的连接。,图3,信号与槽(signal-slot),基本技术,如何使用将Object3的signal1信号和Object4的slot3槽函数连接信号signal1是一个函数声明,例如voidsignal1(/*参数*/)槽slot3是Object4的一个成员函数,例如voidslot3(/*参数*/)信号signal1的发送会触发槽slot3的执行emitsignal1(/*参数*/),图3,一个信号可以连接任意对象的任意个槽函数,一个槽函数也可以被任意多个信号连接。槽的参数个数不大于信号的参数个数。,事件系统,基本技术,事件Qt中,事件代表应用程序里发生的事情或应用程序需要知道的由于外部活动生成的事情。任意事件是QEvent类或它的派生类的对象,它们能被QObject或派生类对象接收和处理。事件类型Qt有两种事件类型:Qt库类事件和自定义事件Qt库类事件:QMouseEvent,各种鼠标事件。Qevent派生类事件:Qevent:Type属性,事件系统,基本技术,事件发送postEvent异步将事件对象放入事件消息队列尾部排队,然后立即返回。事件是按照其发送到消息队列的顺序依次处理。事件在堆分配。sendEvent同步用notify函数将事件直接发送给接收者处理,返回receiver-event()的返回值。receiver=NULL,广播事件。,事件系统,基本技术,事件发送sendPostedEvents将事件队列中用postEvent提交的发送给receiver的event_type类型的事件立即发送给receiver处理。但是来自窗口系统的事件不被分发,它们被函数processEvents分发。立即分发事件队列中的所有事件,即清空事件队列。,事件系统,基本技术,事件发送notifynotify是事件系统的最基本函数,所有的事件发送最终都要调用这个函数。它把事件event发送给接收者,并返回receiver-event()的返回值。,事件系统,基本技术,事件处理Qt提供了5个级别来处理和过滤事件级别5:重新实现特定的事件处理器mousePressEvent(),keyPressEvent(),paintEvent(),customEvent(),级别4:重新实现QObject:event()必须调用基类的event()来处理不需要显示处理的事件级别3:给被监视对象注册一个事件滤波器发送到monitoredObj的所有事件都会先被filterObj的eventFilter()接收处理,事件系统,基本技术,事件处理级别2:将被监视对象的事件滤波器注册到QApplication对象上。任意Qt应用程序有且仅有唯一的QApplication对象,qApp是指向这个对象的全局指针。级别1:派生类Qapplication并重新实现notify(),1,2,3,4,5,事件,常用类库,基本技术,布局:QLayout,QBoxLayout,QFormLayout,QGridLayout,QStackedLayout组件:Qwidget及其派生类进程与线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业污水处理设施工程可行性研究报告(模板范文)
- 2025年现代企业制度与管理创新的综合能力考试卷及答案
- 2025年网络安全测评师考试试题及答案
- 2025年实验室安全与操作规范知识测试题及答案
- 2025年企业会计信息化管理考试试题及答案
- 2025年农村人居环境改善与发展考试试题及答案
- 2025年计算机网络安全与防护考试试卷及答案
- 2025年城市交通管理与可持续发展的能力测试题及答案
- 2025年国际商务师考试试题及答案
- 物资验收标准管理制度
- 中班安全标识课件
- CSCO恶性血液病诊疗指南(2025)解读
- 广东省风力发电内蒙古分公司广东能源集团招聘笔试题库2025
- 父亲节你了解你的爸爸吗礼赞父亲学会感恩模板
- 2023-2024学年安徽省合肥市六校联盟高一下学期期末联考地理试题(解析版)
- 新设备专项安全风险辨识评估报告示例-副本
- 苏州市昆山市惠民物业管理有限公司招聘笔试真题2024
- 初级银行从业资格考试《个人贷款》新版真题卷(2025年含答案)
- 民航飞行员招飞心理测试题及答案
- 生地考试测试题及答案
- 《动物保定技术》课件
评论
0/150
提交评论