实际上,QT不仅仅是一个巨大的程序库,而是7个程序库,还包括许多使用工具,qmake是其中的一个。如今,术语GUI工具包代表的东西的用途不再仅仅是系统提供的那么一个小部分(GUI界面)。尤其是QT,包含了用于应用程序开发的许多方面的扩展类。其中很多类与程序图形界面相关,但也有很多类涉及到网络编程,OpenGL支持,XML开发等方面。广泛的用途依赖于QT类的平台独立性:除了很少的例外,在所有的操作系统上,所有的类都可用,并且同样的类具有同样的方法和行为。
 
QT4包含下列程序库:
QtCore包含没有GUI界面的基础类。
QtGui包含GUI基础类。
QtNetwork包含网络类。
QtOpenGL包含OpenGL支持。
QtSql包含SQL数据库类。
QtXml包含XML和DOM类。(参见第45页)
QtAssistantClient允许你使用QT助手作为你的程序的文档浏览器。
Qt3Support包含为保证对QT3向下兼容的类。
Qt 4.1增加了QtSvg库,哟提供对SVG向量图形格式的支持,还增加了QtTest库,也被称作QTestLib,包括单元测试框架。
在Qt 4.2最终版中,奇趣公司增加了QtDBus模块,用于支持Freedesktop.org的公共信息系统(DBus)。
你可能需要将程序代码连接至多个库文件,用得最多的是QtCore和QtGui。因此,qmake默认包含这两个库。
需要连接的库文件由qmake的变量QT指定。默认包含变量core和gui。例如,要开发一个有网络支持的图形界面程序,你应该将值network添加到QT变量。即在工程文件.pro中添加这样的一行:
QT += network
要编写一个支持XML的控制台程序,只需要链接QtCore和QtXml,不需要QtGui,所以你必须添加值xml并且移除值gui。工程文件中添加如下两行:
QT -= gui
QT += xml
如果要使用Qt 4.0中的所有库文件,这样写:
QT += network opengl sql xml support(core和gui默认包含,不需要写)
除了在工程文件中指定之外,还有另外一个关于Qt库知识的特别有用的主题。除了定义类的独立头文件之外(这些头文件的文件名和它们描述的类的名字一致),QT也为它的程序库提供了头文件。这些文件中的每一个都包含了一个库的许多类文件的接口描述。因此,从本书开始到目前为止的所有例子中(我们都仅仅使用了QtGui中的类),我们没有写很多单个的#include声明,而只是简单的这样写:
#include <QtGui>
然而,这些库的头文件通常非常长,明显减慢了编译过程,写成<QtGui/QLabel>较好。如果编译器支持预编译头文件,这将不是一个问题,但是只有最近的编译器才支持(如GCC3.4以上的版本)。
 
基础库QtCore
QtCore是每个Q程序都必不可少的一个库。除了其它的,它提供了下面的功能:
基本数据类型,如QString和QByteArray
基本数据结构,如QList, QVector和QHash
输入输出类,如QIODevice, QTextStream和QFile
支持多线程编程的类(包括QWaitCondition和QThread)
基础类QObject和QCoreApplication(QApplication类的基类)
这些类都不依赖于GUI组件。独立于GUI使得Qt程序可以不使用GUI界面(如控制台程序)。
在非图形界面程序中,QCoreApplication承担了QApplication在图形界面程序中的职责:负责事件循环。如果你需要在网络连接中使用多线程的异步通信,就会发现这很有用。
 
图形界面库QtGui
QtGui库包含所有图形用户界面编程必须的类文件:
QWidget类和它的子类,如QLabel和QPushButton等
布局类(包括QVBoxLayout, QHBoxLayout和QGridLayout)
用于给程序添加菜单的类,如QMainWindow和QMenu
用于绘图的类,如QPainter, QPen和QBrush
提供现成的对话框的类(包括QFileDialog和QPrintDialog)
QApplication类
QtGui库依赖于QtCore库
 
网络库QtNetwork
QtNetwork库提供了部分编写网络应用程序需要的类。除了通过QTcpSocket和QUdpSocket类支持简单的套接字通信之外,网络库还通过QHttp和QFtp.支持CS(客户机-服务器)的HTTP和FTP连接。
和QtGui不同的是,QtNetwork依赖于QtCore库,但是它也可以与QtGui和其它库一起使用。
 
OpenGL支持库QtOpenGL
QtOpenGL库支持在Qt程序中使用OpenGL。它提供了QGLWidget类——一个Qt窗口部件,在其中你可以使用OpenGL指令绘图。QtOpenGL依赖于QtCore和QtGui库。
 
数据库类QtSql
QtSql库提供Qt程序中访问SQL数据库的能力。这个库包含用于建立SQL数据库连接以及查询和修改数据的类。Qt支持的SQL数据范围包括:开源数据库PostgreSQL, MySQL和SQLite。QtSql依赖于QtCore库,我们将在第九章深入讨论。
 
XML库QtXml
QtXML库提供了一个简易的,非验证的XML解析器。它通过SAX2(Simple API for XML)接口实现这个功能。
QtXml也包含DOM标准(Document Object Model 文档对象模型)的一个实现。相应的类允许你解析XML文档,操纵树结构,以XML文档格式发布修改过的文档,或者使用DOM创建一个新的XML文档。
这个库依赖于QtCore库,我们将在第十三章深入讨论。
 
Qt3兼容库Qt3Support
与前任Qt 3相比,Qt 4 的变化相当大:一些类包含的改进与Qt 3版本不兼容,还有一些类在Qt 4中被全新的不同名字的类取代。为了简化Qt 3程序移植到Qt 4的工作,奇趣公司在Qt3Support库中提供了相应的Qt 3的类。然而,在新程序中你不应该使用这个库,因为这些类已经停止开发了。因为这本书讲述Qt 4 编程,我们将不会使用这些类,而且以后也不会讨论它们。
 
向量图形库QtSvg
W3C发布的基于XML的SVG向量图形格式,具有巨大的潜力。从Qt 4.1版本开始QtSvg库支持SVG规范SVG Basic和SVG Tiny,它们用于显示SVG文件和动画,虽然QtSvg库还不能创建它们,也不能作为将SVG文件当作XML文档通过DOM树操纵它们。
 
帮助库QtAssistantClient
Qt助手库允许你精确控制Qt助手应用程序。允许你使用它作为你的程序的平台独立的帮助文件浏览器。这个模块的核心是QAssistantClient类。
Qt助手使用的自定义帮助页面必须是基本的HTML格式,而且必须有一个XML文件用于描述文档结构。
 
测试库QTestLib
本来QTestLib是在Qt核心发行版之外提供给付费用户的,从Qt 4.1.0版开始被纳入Qt常规发行版。测试库包含用于编写严格的单元测试的工具,涵盖的范围和Java中的JUnit类似。
 
消息库QtDBus
QtDBus是Linux和类Unix系统上的一个消息协议。例如,Linux硬件抽象层(HAL)和即将发布的KDE4都使用DBus作为进程间通信协议。尽管Windows和Mac OS X的移植版已经存在,但Qt 4.2将只针对Unix系统提供QtDBus库。然而,将来可能会发生变化。
 
ActiveQt 和迁移类
Windows平台特有的扩展ActiveQt使得可以通过Qt实现ActiveX组件和在Qt程序中使用ActiveX组件。然而,此功能仅仅在商业版的Qt中可用。
奇趣也提供了从基于MFC,Motif和Xt的程序迁移的解决方案。然而,和ActiveQt一样,它们也仅仅作为Qt 4单独的商业插件(Qt Solutions)提供,所以也不会在本书中讨论。

QT程序库的更多相关文章

  1. 如何在 VS2015 上开发 Qt 程序

    所有Qt版本下载地址: http://download.qt.io/archive/qt/ 所有Qt Creator下载地址: http://download.qt.io/archive/qtcrea ...

  2. Beginning Linux Programming 学习--chapter 17 Programming KDE using QT

    KDE: KDE,K桌面环境(K Desktop Environment)的缩写.一种著名的运行于 Linux.Unix 以及FreeBSD 等操作系统上的自由图形桌面环境,整个系统采用的都是 Tro ...

  3. Unix 和· Linux 系统概述

    一.Unix 1.Unix 定义 Unix 是一个计算机操作系统,一个用来协调.管理和控制计算机硬件和软件资源的控制程序 '2.Unix 特点 ① 多用户:在同一时刻可以有多个用户同时使用Unix操作 ...

  4. 《linux性能及调优指南》 3.3 内存瓶颈

    摘要:3.3内存瓶颈OnaLinuxsystem,manyprogramsrunatthesametime.Theseprogramssupportmultipleusers,andsomeproce ...

  5. 抗衡Win Linux全凭这些桌面环境

    2012年01月25日 元老级桌面环境KDE     Linux操作系统最早使用在服务器上,而桌面操作系统并不是Linux的重点突围.但是,近几年Linux桌面操作系统有崛起的趋势,抢夺了部分桌面操作 ...

  6. Linux桌面“彩”起来:桌面环境及窗口管理器大盘点

    2011-02-22 11:49:50   看到这个标题,很多人一定认为桌面环境和窗口管理器是一回事,但严格来说窗口管理器和桌面环境是有区别的.桌面环境(Desktop Environments)是最 ...

  7. Linux就是这个范儿之第一次亲密接触(2)

    原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明.否则将追究法律责 1.2 不一样的图形操作 几乎所有Linux的新用户都会认为Linux的图形界面是相当的绚丽又多彩. ...

  8. 10.05 最初对Linux的了解,对Shell的认识

    linux的起源:UNIX,代码开源,可以得到源代码,然后自己编译,通过以后可以运行程序. 特点:免费的;兼容POSIX1.0标准;多用户,多任务系统;良好的用户界面;提供了图形界面;支持多种文件系统 ...

  9. (转)《linux性能及调优指南》 3.3 内存瓶颈

    翻译:Hank (http://blog.csdn.net/fireroll)版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明.原文名称:<Linux Performance an ...

随机推荐

  1. 关于call 与 apply 那些事

    1.定义: call : 调用一个对象的一个方法,以另一个对象替换当前的对象. apply : 应用某一对象的一个方法,用另一个对象替换当前的对象. 2.用法: call:call(thisObj, ...

  2. mysql中显示方式的切换

    1. mysql中如果使用\G,则':'不用写.如果\G后面跟':'则会报"error:no query specified"错误.请知晓. 2. mysql在登陆时,mysql ...

  3. sphinx (coreseek)——3、区段查询 与 增量索引实例

    首先本文测试数据100多万的域名的wwwtitle 信息  检索数据: 首先建立临时表格: CREATE TABLE `sph_counter` ( `index_id` ) NOT NULL, `m ...

  4. nginx 编译选项

    内容有些多,一眼看来难免头昏脑胀,但坚持看完,相信你一定会有所收获. nginx参数: --prefix= 指向安装目录 --sbin-path 指向(执行)程序文件(nginx) --conf-pa ...

  5. YII 验证邮箱和QQ号码

    //验证邮箱非空,和邮箱格式                    //验证邮箱非空,和邮箱格式                     array("email","e ...

  6. windows server 2008 asp连接数据库sql2000失败

    由于服务器现在的服务器已不能承受了,需要替换服务器并把window2003升级为window2008,把所有数据都平移过来.平移完后遇到ASP总是不能连接上sql2000,这让我非常郁闷,处理了好几个 ...

  7. isKindOfClass:和isMemberOfClass:-b

    isKindOfClass: Returns a Boolean value that indicates whether the receiver is an instance of given c ...

  8. hibernate spring sturts2配置

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  9. SequoiaDB 架构指南

    1 简介 SequoiaDB(巨杉数据库)是一款分布式非关系型文档数据库,可以被用来存取海量非关系型的数据,其底层主要基于分布式,高可用,高性能与动态数据类型设计,与当前主流分布式计算框架 Hadoo ...

  10. paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..

    paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置.. 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址: ...