实际上,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. CetnOS minimal 网络不可用

    系统版本: CentOS-6.6-i386-minimal 问题说明: CentOS minimal 在安装完成之后,网络不可用,一些常见的命令报错,如: ping: unknow host xxxy ...

  2. Java发邮件:Java Mail与Apache Mail

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.邮件简介 一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 1.收件人:收件人的邮箱地址,例 ...

  3. visual studio中验证控件的使用

    1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交信息. RequiredFieldValidator控件中,主要设置三个属性: (1)ErrorM ...

  4. Canvas实现文字粒子化,并且绕轴旋转(初号机)

    写下来发现,程序在细节上处理的很差,比如旋转的时候,在终点处有明显的撞墙感觉,以及小部分粒子存在精度差异,导致撞击后不与整体平衡. 注释全在代码中了,就不多说了,另外感觉写的旋转的规则有点怪,后续再调 ...

  5. memcache 操作类

    <?php /** * memcache 操作实现 * @author timeless */ class Memcache_manage { //CI原始的信息 private $_ci; p ...

  6. Django Admin 简单部署上线

    前言 打算为公司弄一个管理公用密码的平台,由于比较懒,就选择使用Django admin,默认的admin并不漂亮,于是我使用了这个django-suit插件来美化 如图: 是不是比原来的漂亮多了. ...

  7. BAE 环境下配置 struts2 + spring + hibernate(SSH)(一)准备

    1.首先选择版本控制 SVN 或者 Git ,但是由于Git在windows下需要环境,所以优先选择SVN. 2.安装一个SVN客户端 windows下使用TortoiseSVN:立即下载 注意:BA ...

  8. 查看SharePoint list的xml

    http://{0}/_vti_bin/owssvr.dll?Cmd=Display&List={1}&XMLDATA=TRUE {0} – The URL to your site. ...

  9. Biathlon Track

    Codeforces Round #242 (Div. 2) D:http://codeforces.com/contest/424/problem/D 题意:给你一个n*m的矩阵,每个格子上面有个数 ...

  10. Dungeon Master

    poj2251:http://poj.org/problem?id=2251 题意:给你一个三维的立方体,然后给你一个起点,和终点的坐标.然后让你求从起点到终点的最短路程.题解:该题就是求三维的最短路 ...