Qt入门教程-CQtGUI编程基础.ppt

上传人:sh****n 文档编号:6409344 上传时间:2020-02-25 格式:PPT 页数:29 大小:919.50KB
返回 下载 相关 举报
Qt入门教程-CQtGUI编程基础.ppt_第1页
第1页 / 共29页
Qt入门教程-CQtGUI编程基础.ppt_第2页
第2页 / 共29页
Qt入门教程-CQtGUI编程基础.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
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及其派生类进程与线程 QProcess QThread多媒体 QtMultimedia Phonon绘图 PaintSystem网络编程 QtNetwork表格 Model View结构浏览器 QWebKit数据库 QtSql具体如何使用可以参考Qt的自带文档 包含大量的实例 参考文献 C GUIQt4编程高级Qt编程Qt在线帮助文档http download qt project org 谢谢
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!