Qt入门教程-C++QtGUI编程基础

上传人:小** 文档编号:26884349 上传时间:2021-08-14 格式:DOC 页数:42 大小:1.57MB
收藏 版权申诉 举报 下载
Qt入门教程-C++QtGUI编程基础_第1页
第1页 / 共42页
Qt入门教程-C++QtGUI编程基础_第2页
第2页 / 共42页
Qt入门教程-C++QtGUI编程基础_第3页
第3页 / 共42页
资源描述:

《Qt入门教程-C++QtGUI编程基础》由会员分享,可在线阅读,更多相关《Qt入门教程-C++QtGUI编程基础(42页珍藏版)》请在装配图网上搜索。

1、 主要内容 起源与发展 基本技术 3 参考文献 起源与发展 大事记 版本与授权 开发平台与编译器 X k 起源

2、 Qt是挪威Trolltech倚趣科技)公司开发的 跨平台C++图形用户界面应用程序开发工具。 八 它的设计目标是:“一次编写,随处编 译”。只需要编写一次代码,就可以在不同 的系统平台上编译并生成图形用户界面应用 程序。 起源与发展 起源与发展 起源 Qt最初是由Haavard Nord(哈瓦德,奇趣 CEO)和Eirik Chambe-Eng(埃里克,奇趣总 裁)开发的。 他们都在挪威科技学院获得计算机硕士 学位。 Qt框架首度为公众可用是在1995年5月。 1995年,与挪威的Metis公司签订了第一份 基于Qt的软件开发合同。

3、 起源与发展 起源 Haavard Nord Eirik Chambe・Eng mh ■■土 = 大事记 Haavard和Eirik因为一个超声波图像方面 的C++数据库系统而聚在一起工作。 这个系统需要一个能在Unix, Macintosh 和Win

4、dows上都能运行的图形用户界面。 A1991年 他们合作设计编写了之后成为Qt的那些 类。在随后一年,Eirik提出了信号-槽机制。 A1993年 开发了Qt的第一个图形内核程序,并用 它们实现了一些窗口部件。 起源与发展 大事记 创立"Quasar Technologies??公司,后 来改名为“Trolltech ”(奇趣科技)。 A1995年 与挪威的Metis公司签订了第一份基于Qt 的软件开发合同。 A1996年 在Matthias Ettrich(马蒂亚斯)的带领下 KDE项目创立。 之后一年,Matthias决定用Qt开发KDE,(结

5、使得Qt成为Linux环境下开发C++图形用户 界面的事实标准, \O) 起源与发展 大事记 KDE, (K Desktop Enviroment) K桌面环境的缩写。它是一个运行于 Linux、Unix以及FreeBSD等操作系统 上的桌面图形界面系统。整个系统都是 采用奇趣公司的Qt程序库开发的。项 目的发起人是马蒂亚斯•埃特里希。 A2008年 Nokia 从 Trol Itech 公司收购 Qt。 A2011 年 Digia(芬兰IT服务公司)从Nokia收购了 Qt 的商业賊权。Nokia负责右勺Qt-on-Mobile和 Qt Commercial由

6、Digia接手。 A2012年 Nokia宣布将Qt软件业务出售给Digia。 起源与发展 大事记 起源与发展 大事记 起源与发展 开发平台与编译器 rQt 4.x支持的宰有 •桌面系统Windows, Unix, Linux/X11, Mac OS X •嵌入式系统Embedded Linux •移动终端系统Symbian, >Qt 5.0.x支持Android的开发。 >Qt 5.1 Beta支持IOS和Android应用程序的开发。 Qt Cross Platform Sup

7、port DeskTop Embeddeci/Motiile Windows Embedded Linux Linu^ll Symbian Mac OS X 图1 编译器 >Windows: MSVC >Linux/X11: GCC ◎ >Mac OS X: Clang 基本技术 面向对象 2 倍号与槽 事件系统 常用类库 面向对象 “堤C士+的扩展: Qt与C++不同的特征是用C++开发出来的。 >QtCore 和 QtGui QtCore和QtGui是Qt的两个核心组成模 块,每个模块分别包含大量的Qt类

8、。 QtCore包含的类实现了 Qt的非图形用户 界面(non-GUI)功能,所有其他的Qt模块都 依赖于此模块。 QtGui在QtCore的基础上实现了 Qt的图 形用户界面功能,定义了所有图形用户界面 (GUI)类。 ◎ 面向对象 有的助— •对象间无缝通信机制:信号和槽技术 (signal-slot) •强大的事彳牛和事件滤波器(events and eve nt filters) •可查询和设计的对象属性(object properties) •层次化的可查询对象树(object trees) •间隔驱动的定时器(interval driven timers

9、) •智能指针(QPointers) •国际化(internatioanlization) 面向对象 _Qt独有犠临的实现 一部分是通过Qt元对象系统(Meta- Object System)和元对象编译器(MetaObject Compiler)实现的。 另一部分是通过继承QObject类用C++实 现的。 元对象系统和元对象编译器是Qt对C++ 的扩充。用纯C++实现,能使Qt更适合于组 件GUI编程。 基本技术 信号与 It(signal-slot) •图2是一个最简单的Qt类。 •要支持信号和槽,任意自定义类要继承 QObject类,并在

10、类定义体内声明Q_Object宏。 •元对象系统通过QObject和Q_0MeCT宏实 现信号和槽: class ClassName : public QObject { Q OBJECT public: //公有成员 private: //私有成员 signals: //(5 号 void Signalf/*形参穴/); private slots: //私有槽更数 public slots: 35 //公有槽函数 }; ^■1 > Q_QBJ ECT宏和QO解诞更 • Q_OBJECT宏声明了每个QObject子类必需 的内省函数,如metaObject()

11、> qt_metaCall(), 以及其他一些函数。 • CH的元系统编译器编译自动生成Q_OBJECT 声明的函数和信号的实现 • QObject成员函数,如connect()> disconnector用这些内省函数完成信号和槽的 工作。 •上述过程由元系统编译器和QObject自动处理, 程序员不需要考虑。 •信号与槽的使用非常简单和灵活。 •以图3为例,Objectl > Object2、Object3和 Object4是QObject的派生类对象,实线表示信 号■槽的连接。 图3 基本技术 事件系统 > -hn {nT伸 ffi k XH IT |y^

12、/Tj •将0 bject3 的 signall 信号和 O bject4 的 slot3 槽 函数连转 •信号signall是一个函数声明,例如 void signal1(/*参数*/) •槽slot3是Object4的一个应员函数,例如 void slot3(/*参数勺 •信号signall的发送会触发槽slot3的执行 emit signal1(/* 参数"7) •一个信号可以连接任意对象的任意个槽函数,◎ 一个槽函数也可以被任意多个信号连接。槽的V 参数个数不大于信号的参数个数。 、 ”事件 • Qt中,事件代表应用程序里发生的事情或应 用程序需要知道的由于外部活动

13、生成的事情。 •任意事件是QEvent类或它的派生类的对象, 它们能被QObject或派生类对象接收和处理。 A事件类型 • Qt有两种事件类型:Qt库类事件和自定义事 件 •Qt库类事件:QMouseEvent,各种鼠标事件。 •Qevent派生类事件:Qevent::Type属性 Constant Value Description QEvent::User 1000 Us-er-defined event QEvent::MaxUser 65535 Last u^er event ID. •postEvent [异步] 将事件对象放入事件消息

14、队列尾部排队,然后 立即返回。事件是按照其发送到消息队列的顺序 依次处理。事件在堆分配。 •sendEvent [同步] 用notify函数将事件直接发送给接收者处理,返$ 回 receiver->event()白勺返回值。receiver==N 广播事件。 • sendPostedEvents void Kordpplication: : sendPostedEvents • Object receiver, int eventjype) [static] 将事件队列中用postEvent提交的发送给receiver 的event_type类型的事件立即发送给receive

15、r处理。 但是来盲窗口系统的事件不被分发,它们被函数 processEvents 分发。 立即分发事件队列中的所有事件,即清空事件队; 列。 O • notify bool QCoreApplication::notify (QObject * receiver, QEvent * event) [virtual] notify是事件系统的最基本函数,所有的事件发送 最终都要调用这个函数。它把事件event发送给接 收者,并返回receiver->event()的返回值。 >事件外理 一— _ r •Qt提供了戸F级别来也理和过滤事件 ♦级别5:重新实现特定的事件

16、处理器 mousePressEvent(), keyPressEvent(), paintEvent(), customEvent(), ♦级别4:量新实现QObject::event() 必须调用基类的event()来处理不需要显示处理 的事件 ♦级别3:给被监视对象注册一个事件滤波器 void QObject:inStallEventPilter ( QObject * filterObj ) I monitoredObj->installEventFilter(filterObj); 发送到m onitoredObj的所有事件都会先被 ◎ filterObj 的 eventF

17、ilter()接收处理 ♦级别bW被监视对象的事件滤波器注册到 QApplication 对象上。 任意Qt应用程序有且仅有唯一的QApplication 对象,qApp是指向这个对象的全局*旨针。 ♦级别1:派生类Qapplication并重新实现 notify() 事件 基本技术 常用类库 oxLayout, QFormLayout, QGridLayout, QStackedLayout A组件Qwidget及其派生类 A进程与线程:QProcess, QThread A多媒体:QtMultimedia, Phonon A绘图:Paint System A网络编程:QtNetwork A表格:Model/View结构 A浏览器:QWebKit A数据库:QtSql 具体如何使用可以参考Qt的自带文档, 的实例。 参考文献 1. C++GUI Qt 4编程 2. 高级Qt编程 3. Qt在线帮助文档 4. http://download.qt-project.org/

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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