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

2、发合同。起源与发展起源Haavard NordEirik ChambeEngmh 土 =大事记Haavard和Eirik因为一个超声波图像方面 的C+数据库系统而聚在一起工作。这个系统需要一个能在Unix, Macintosh 和Windows上都能运行的图形用户界面。A1991年他们合作设计编写了之后成为Qt的那些 类。在随后一年,Eirik提出了信号-槽机制。A1993年开发了Qt的第一个图形内核程序,并用 它们实现了一些窗口部件。起源与发展大事记创立Quasar Technologies?公司,后 来改名为“Trolltech ”(奇趣科技)。A1995年与挪威的Metis公司签订了第一

3、份基于Qt的软件开发合同。A1996年在Matthias Ettrich(马蒂亚斯)的带领下 KDE项目创立。之后一年,Matthias决定用Qt开发KDE,(结 使得Qt成为Linux环境下开发C+图形用户 界面的事实标准,O)起源与发展大事记KDE, (K Desktop Enviroment) K桌面环境的缩写。它是一个运行于 Linux、Unix以及FreeBSD等操作系统 上的桌面图形界面系统。整个系统都是 采用奇趣公司的Qt程序库开发的。项 目的发起人是马蒂亚斯埃特里希。A2008年Nokia 从 Trol Itech 公司收购 Qt。A2011 年Digia(芬兰IT服务公司)从

4、Nokia收购了 Qt 的商业賊权。Nokia负责右勺Qt-on-Mobile和 Qt Commercial由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 SupportDeskTopEmbeddeci/M

5、otiileWindowsEmbedded LinuxLinullSymbianMac OS X图1编译器Windows: MSVC Linux/X11: GCC Mac OS X: Clang基本技术面向对象2倍号与槽事件系统常用类库面向对象“堤C士+的扩展:Qt与C+不同的特征是用C+开发出来的。QtCore 和 QtGuiQtCore和QtGui是Qt的两个核心组成模 块,每个模块分别包含大量的Qt类。QtCore包含的类实现了 Qt的非图形用户 界面(non-GUI)功能,所有其他的Qt模块都 依赖于此模块。QtGui在QtCore的基础上实现了 Qt的图形用户界面功能,定义了所有图形

6、用户界面 (GUI)类。面向对象有的助对象间无缝通信机制:信号和槽技术(signal-slot)强大的事彳牛和事件滤波器(events and eve nt filters)可查询和设计的对象属性(objectproperties)层次化的可查询对象树(object trees) 间隔驱动的定时器(interval driven timers)智能指针(QPointers)国际化(internatioanlization)面向对象 _Qt独有犠临的实现一部分是通过Qt元对象系统(Meta- Object System)和元对象编译器(MetaObject Compiler)实现的。另一部分是通

7、过继承QObject类用C+实 现的。元对象系统和元对象编译器是Qt对C+ 的扩充。用纯C+实现,能使Qt更适合于组 件GUI编程。基本技术信号与 It(signal-slot)图2是一个最简单的Qt类。要支持信号和槽,任意自定义类要继承QObject类,并在类定义体内声明Q_Object宏。 元对象系统通过QObject和Q_0MeCT宏实 现信号和槽:class ClassName : public QObject Q OBJECTpublic:/公有成员private:/私有成员signals: /(5 号 void Signalf/*形参穴/);private slots:/私有槽更数

8、public slots:35/公有槽函数;1 Q_QBJ ECT宏和QO解诞更 Q_OBJECT宏声明了每个QObject子类必需 的内省函数,如metaObject() qt_metaCall(), 以及其他一些函数。 CH的元系统编译器编译自动生成Q_OBJECT 声明的函数和信号的实现 QObject成员函数,如connect() disconnector用这些内省函数完成信号和槽的 工作。上述过程由元系统编译器和QObject自动处理, 程序员不需要考虑。信号与槽的使用非常简单和灵活。以图3为例,Objectl Object2、Object3和 Object4是QObject的派生类

9、对象,实线表示信 号槽的连接。图3基本技术事件系统 -hn nT伸 ffi k XH IT |y/Tj将0 bject3 的 signall 信号和 O bject4 的 slot3 槽 函数连转信号signall是一个函数声明,例如void signal1(/*参数*/)槽slot3是Object4的一个应员函数,例如void slot3(/*参数勺信号signall的发送会触发槽slot3的执行 emit signal1(/* 参数7)一个信号可以连接任意对象的任意个槽函数, 一个槽函数也可以被任意多个信号连接。槽的V 参数个数不大于信号的参数个数。 、”事件 Qt中,事件代表应用程序里发

10、生的事情或应 用程序需要知道的由于外部活动生成的事情。任意事件是QEvent类或它的派生类的对象, 它们能被QObject或派生类对象接收和处理。A事件类型 Qt有两种事件类型:Qt库类事件和自定义事 件Qt库类事件:QMouseEvent,各种鼠标事件。Qevent派生类事件:Qevent:Type属性ConstantValueDescriptionQEvent:User1000Us-er-defined eventQEvent:MaxUser65535Last uer event ID.postEvent 异步将事件对象放入事件消息队列尾部排队,然后立即返回。事件是按照其发送到消息队列的顺

11、序 依次处理。事件在堆分配。sendEvent 同步用notify函数将事件直接发送给接收者处理,返$ 回 receiver-event()白勺返回值。receiver=N 广播事件。 sendPostedEventsvoid Kordpplication: : sendPostedEvents Object receiver, int eventjype) static将事件队列中用postEvent提交的发送给receiver 的event_type类型的事件立即发送给receiver处理。 但是来盲窗口系统的事件不被分发,它们被函数 processEvents 分发。立即分发事件队列中的

12、所有事件,即清空事件队; 列。O notifybool QCoreApplication:notify (QObject * receiver, QEvent * event) virtualnotify是事件系统的最基本函数,所有的事件发送 最终都要调用这个函数。它把事件event发送给接 收者,并返回receiver-event()的返回值。事件外理一_ rQt提供了戸F级别来也理和过滤事件级别5:重新实现特定的事件处理器 mousePressEvent(), keyPressEvent(), paintEvent(), customEvent(),级别4:量新实现QObject:even

13、t()必须调用基类的event()来处理不需要显示处理 的事件级别3:给被监视对象注册一个事件滤波器void QObject:inStallEventPilter ( QObject * filterObj ) I monitoredObj-installEventFilter(filterObj);发送到m onitoredObj的所有事件都会先被filterObj 的 eventFilter()接收处理级别bW被监视对象的事件滤波器注册到QApplication 对象上。任意Qt应用程序有且仅有唯一的QApplication 对象,qApp是指向这个对象的全局*旨针。 级别1:派生类Qap

14、plication并重新实现 notify()事件基本技术常用类库oxLayout, QFormLayout,QGridLayout, QStackedLayoutA组件Qwidget及其派生类A进程与线程:QProcess, QThreadA多媒体:QtMultimedia, PhononA绘图:Paint SystemA网络编程:QtNetworkA表格:Model/View结构A浏览器:QWebKitA数据库: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交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!