Qt程序设计基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三.组件的创建
组件的创建需要调用相应组件的类,并在头文件中包含 此类的头文件或者创建自定义类,继承以后组件类的功能
#include <qpushbutton.h>
3.组件的创建
#include<QWidget> class hello::public QWidget {
……
}
hello类继承了QWidget类的特征,并加入了自定义的特 征功能,同样需要在头文件中包含此类的头文件 在main.cpp的函数中需要创建hello类的实例,或创建 QPushButton类的实例,才可以使用
二.窗口的创建
在Qt程序中,创建窗口比较简单,只要在main.cpp文件 中为ApplicationWindow建立一个指针: ApplicationWindow *mw = new ApplicatonWindow(); ApplicationWindow是在Application.h中定义的类,它是 一个QmainWindow的继承类
对于库来讲,它的有效性远超过应用性。为了提高Qt库的有 效性、快捷性,对其进行了优化,Qt能执行一些基本的任务,比如图形 的润色,比一般的基于平台的代码要快。Qt是基于Xlib。
7.可用户化外观
8.高性能的工具
Xwindows的底层库
9.优越的绘画功能
Qt的绘画工具QPainter类,在任意一个绘图 设备上都可以润色图形。绘图设备包括组件、 像素映射、图形文件和打印机,相同的代码 可以用在4种不同类型的设备上。 QPainter 类支持复杂的同等系统的转换,很容易在所 有平台上画旋转文本和像素映射。
Qt简介
Qt是Trolltech公司的标志性产品,是一个跨 平台的C++图形用户界面(GUI)工具包 Qt 应用程序接口与工具兼容于所有支持平台, 让开发员们掌握一个应用程序接口,便可执 行与平台非相关的应用开发与配置
Qt/Windows (Windows XP, 2000, NT 4, Me/98)
3. 丰富的 API
Qt为专业应用提供了大量的函数,在Qt的API中含有500多 个C++类,大多数的类都是GUI专有的。
4.用户自定义控件
其他的工具包在应用时都存在一个普遍的问题,就是经常没 有真正适合需求的控件, 生成的自定义控件对用户来说,也 是一个黑匣子。比如,在Motif手册中就讨论了用户自定义的 控件的问题。而在Qt中,能够创建控件,具有绝对的优越性, 生成自定义控件非常简单,并且容易修改控件。
描述
核心非GUI功能 核心GUI功能 网络模块 OpenGL 模块 SQL 模块 SVG 透视图类 XML 模块 支持Qt3的类 ActiveQt 客户端的扩充 ActiveQt 服务器段的扩充 Qt助手的语言类 Qt设计器的扩展类 生成动态GUI类 单元测试工具类
类模块介绍
QtCore—QtCore模块是所有基于Qt的应用 程序的基础,提供信号与槽的对象间通信机 制、IO、事件和对象处理、多线程。 QtGui—包含了开发图形用户界面应用程序 所需的功能。使用其支持的各个平台的本地 图形API。支持反锯齿、向量形变。 QtNetwork—提供了网络程序设计功能。支 持通用协议,如HTTP、FTP和DNS,包括 对异步HTTP 1.1的支持。 QtOpenGL—提供在应用程序中使用 OpenGL和OpenGL ES加入3D图形。在
10.绘制2D/3D图形功能
Qt提供了QGLWidget类,使用该类能够绘制 2D/3D图形。用QGLWidget就像用一个Qt组 件一样方便。这比纯粹的用OpenGL做的3D 图形更好使用。
Qt提供了大量的联机参考文档,有超文本 HTML方式,也有Unix帮助页man手册页和补
11.友好的联机帮助
QtSql—将数据库集成至应用程序。支持所有 主要的数据库驱动包括ODBC、MySQL、 PSQL、SQLite、ibase、Oracle、Sybase、 DB2。 QtSvg—支持SVG格式。 QtXml—提供了XML文档的阅读器和编写器、 支持SAX和DOM。 Qt3Support—模块提供兼容Qt 3.х.х版本的程 序库。 QtTest—提供单元测试框架和鼠标和键盘模 拟功能。集成Visual Studio和KDevelop。
五、Qt编程特点
零、整个Qt应用程序的执行过程
Qt应用程序
初始化 处理事件 结束
Qt 库
请求队列
事件队列
键盘
计算机
屏幕
X server
鼠标
设备相关层
五、Qt编程特点
一、初始化
在Qt应用程序中,首先要创建一个QApplication 对象,QApplication类负责图形用户界面应用程 序的控制流和主设置,在main.cpp中定义如下:
系统设置:setFont() 用来设置字体 事件处理:sendEvent() 用来发送事件 GUI风格:setStyles() 设置图形用户界面的风格 颜色使用:colorSpec() 用来返回颜色文件 文本处理:translate() 用来处理文本信息 创建组件:setmainWidget() 用来设置窗口的主组件 ……
控制台输入的参数
int main(int argc, char **argv) { QApplication a(argc, argv); …… 控制台输入的参数个数 }
QApplication包含在main()函数的事件循环体中,对所有 来自本地Window系统和其它源文件的事件进行处理和调度, 还包括处理应用程序的初始化和结束,并且提供会话管理。 在Qt应用程序中,不管有多少个窗口,QApplication对象 只能有一个,而且必须在其他对象之前创建。 QApplication类中封装了很多函数,其中包括:
QT的历史
1996 Sep 24 Qt1.0 1996 Oct KDE 组织成立 1998 Apr 05 Trolltech 的程序员在 5 天之内将
Netscape5.0 从 Motif 移植到 Qt 上 1998 Apr 08 KDE Free Qt 基金会成立 1998 Jul 12 KDE 1.0 发布 1999 Jun 25 Qt 2.0 发布 2000 Mar 20 嵌入式 Qt 发布 2000 Sep 06 Qt 2.2 发布 2000 Sep 04 Qt free edition 开始使用 GPL 2004 Aug 4.0 2008 Aug 4.4发布, 集成Webkit和Phonon
Qt程序设计基础
主要内容
一、QT的历史、 Trolltech公司 二、基于QT开发的软件 三、QT的优越性 四、QT的类组成 五、QT的编程特点 六、QT的主要通信机制—信号和槽 七、QT程序实例
一、Trolltech公司介绍
Trolltech公司由Haavard Nord (执行总裁) 和 Eirik Chambe-Eng (总裁)于1994年在挪威创 立的,2008年6月被NOKIA收购。通过直销, 转售和战略合作伙伴等多种方式联合销售产 品。Trolltech是一家拥有两个主线产品(Qt和 Qtopia)的软件公司。 Trolltech采取了成 功的双重授权战略,为开发者提供商业和免 费软件的授权使用。拥有遍布全球60个国家 的4400个客户,其中包括Adobe, IBM, Sharp,Siemens及其他全球知名公司。
4.事件
Qt事件的处理过程:QApplication的事件循环体从事件 队列中拾取本地窗口系统事件或其他事件,译成QEvent, 通过调用函数QObject::event()并送给QObject,最后送给 QWidget::event()对事件处理( QObject::event()函数为虚函 数,可以在子类中重新实现自定义事件处理,并增加额外的 事件类型。)
Qt/Mac (Mac OS X)
Qt/X11 (Linux, Solaris, HP-UX, IRIX, AIX等)
Qt对不同平台的专门API进行了 专门的封装(文件处理,网络等)
Trolltech的双重授权模式
Fra Baidu bibliotek
Trolltech公司提供两种授权模式,一种用于 商业性质的授权,一种用于免费的开源授权
二、基于QT开发的软件(1): KDE-01
基于QT开发的软件(1): KDE-02
基于QT开发的软件(2): GOOGLE地球
基于QT的软件(3): MAYA
Qtopia是为了Linux的 PDA、智能电话和其他 移动设备设计的一个全 面并且可以用户化的应 用程序平台和用户界面。 它是第一个面向嵌入式
主题
QPainter绘制的图形:
四、Qt系统构造
库
QtCore QtGui QtNetwork QtOpenGL QtSql QtSvg QtXml Qt3Support QAxContainer QAxServer QtAssistant QtDesigner QtUiTools QtTest
1. 优良的跨平台特性
三、QT优越性
Qt支持下列操作系统: Windows,Linux, Solaris,Mac, SunOS, FreeBSD, BSD/OS, SCO, AIX, OS390, QNX 等等。
2. 面向对象
Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用
性较好,对于用户开发来说,一个组件不需要知道它的具体 实现内容,只需懂得如何去使用即可(友好性更好)。 Qt 提供了一种称为 signals/slots 信号和槽的安全类型来替 代 callback, 具有可查询和可设计的属性,这使得各个元件 之间在彼此不知道对方信息的情况下进行协同工作变得十分 简单。
5.方便性
由于Qt是一种跨平台的GUI工具包,所以,它对编程者隐 藏了在处理不同窗口系统时的潜在问题。为了将基于Qt程序更 加方便,Qt包含了一系列类,该类能够使程序员避免了在文件 处理、时间处理等方面存在依赖操作系统方面的细节问题。
6.国际化
Qt为本地化应用提供完全的支持,所有用户界面的文本或字 符串都可以利用翻译工具将其译成各国语言。Qt还支持双字 节16bit国际字符标准 (Unicode编码) Qt支持主题所以基于Qt的应用软件能在Mac外观、Windows 等外观主题之间互换,甚至改变运行时间。这些应用程序不 管是在X Window下,还是在Microsoft Windows下都可以独 立操作、运行。
组件创建时一般是不可见的,这样的好处在于 避免大量组件创建时造成的屏幕闪烁现象,要使 组件可见需要调用QWidget类的成员函数show() 来显示组件
h.show();
4.事件
在程序中,敲击键盘,鼠标指针在窗口中的移动 或鼠标按键动作等,都是事件 在其他工具包中提供了一种叫做回调的事件处 理方式。它通过翻译表,将事件映射为相应的动 作,当组件得到事件通知,就去表中找出相应的 动作例程进行处理。这种机制需要应用程序注册 有关组件的回调函数或普通的事件处理函数,以 分发循环的事件
hello h; QPushButton hello(“Hello,world!”,0);
如果组件本身可以作为主窗口,则无需设置主窗口。在 上例中,下压按钮创建时其构造函数中的第二个参数为0, 表示按钮所在窗口为主窗口,不需要设置主窗口。否则需要 调用QWidget成员函数setMainWidget()来进行设置
窗体(Qwidget)
Qt 拥有丰富的满足不同需求的窗体(按钮, 滚动条等等),Qt 的窗体使用起来很灵活, 为了满足特别的要求,它很容易就可以被子类 化。 窗体是Qwidget类或它子类的实例,客户自 己的窗体类需要从Qwidget它的子类继承。
3. 组件的创建 h.setMainWidget(&h);
Linux的全方位应用程序 开发平台,它可以并且 已经应用于众多的基于 Linux的PDA(个人数字 助理)设备和智能电话。
基于Qtopia开发的软件
基于QT的软件(4): 更多……
• Opera浏览器 • Skype网络电话 • QCad开放源代码的LINUX CAD软 件 • Adobe Photoshop Album 数码图像查找和管理软件 • CGAL计算几何库 • ……