官术网_书友最值得收藏!

第3章 Qt編程基礎

Qt(發音為“cute”,而不是“cu tee”)是一個跨平臺框架,通常用作圖形工具包,不過它在創建命令行(CLI)應用程序方面非常出色。它可以運行在3個主要的桌面操作系統(Windows、Linux和Mac)以及移動設備操作系統(如Symbian、Android和iOS等)上。

Qt 5與Qt 4最大的區別之一是底層架構修改了。Qt 5引入了模塊化的概念,將眾多功能細分到幾個模塊之中。Qt 4也有模塊的概念,不過是一種很粗略的劃分,而Qt 5則更加細化。這里對Qt5的模塊做一個簡單的介紹,以便于大家根據需要的功能找到正確的模塊。

Qt 5模塊分為Essentials Modules和Add-on Modules兩部分。前者是基礎模塊,在所有平臺上都可用;后者是擴展模塊,建立在基礎模塊的基礎之上,在能夠運行Qt的平臺之上可以酌情引入。

Qt基礎模塊分為以下幾個:

(1)Qt Core,提供核心的非GUI功能,所有模塊都需要這個模塊。這個模塊的類包括動畫框架、定時器、各個容器類、時間日期類、事件、IO、JSON、插件機制、智能指針、圖形(矩形、路徑等)、線程、XML等。所有這些類都可以通過#include <QtCore>頭文件來引入。

(2)Qt GUI,提供GUI程序的基本功能,包括與窗口系統的集成、事件處理、OpenGL和OpenGL ES集成、2D圖像、字體、拖放等。這些類一般由Qt用戶界面類在內部使用,當然也可以用于訪問底層的OpenGL ES圖像API。Qt GUI模塊提供的是所有圖形用戶界面程序都需要的通用功能。

(3)Qt Multimedia,提供視頻、音頻、收音機以及攝像頭等功能。這些類可以通過#include<QtMultimedia>引入,需要在pro文件中添加QT+=multimedia。

(4)Qt Network,提供跨平臺的網絡功能。這些類可以通過#include <QtNetwork>引入,需要在pro文件中添加QT+=network。

(5)Qt QML,提供了供QML(一種腳本語言,也提供了JavaScript的交互機制)使用的C++ API。這些類可以通過#include <QtQml>引入,需要在pro文件中添加QT+=qml。

(6)Qt Quick,允許在Qt/C++程序中嵌入Qt Quick(一種基于Qt的高度動畫的用戶界面,適合于移動平臺開發)。這些類可以通過#include <QQuickView>引入,需要在pro文件中添加QT+=quick。

(7)Qt SQL,允許使用SQL訪問數據庫。這些類可以通過#include <QtSql>引入,需要在pro文件中添加QT+=sql。

(8)Qt Test,提供Qt程序的單元測試功能。這些類可以通過#include <QtTest>引入,需要在pro文件中添加QT+=testlib。

(9)Qt WebKit,基于WebKit2的實現以及一套全新的QML API(順便說一下,Qt 4.8附帶的是Qt WebKit 2.2)。

Qt擴展模塊分為以下幾個:

(1)Qt 3D,提供聲明式語法,在Qt程序中可以簡單地嵌入3D圖像。Qt 3D為Qt Quick添加了3D內容渲染。Qt 3D提供了QML和C++兩套API,用于開發3D程序。

(2)Qt Bluetooth,提供用于訪問藍牙無線設備的C++和QML API。

(3)Qt Contacts,用于訪問地址簿或者聯系人數據庫的C++和QML API。

(4)Qt Concurrent,封裝了底層線程技術的類庫,方便開發多線程程序。

(5)Qt D-Bus,這是一個僅供UNIX平臺使用的類庫,用于利用D-Bus協議進行進程間交互。

(6)Qt Graphical Effects,提供了一系列用于實現圖像特效的類,比如模糊、銳化等。

(7)Qt Image Formats,支持圖片格式的一系列插件,包括TIFF、MNG、TGA和WBMP。

(8)Qt JS Backend,沒有公開的API,從V8 JavaScript引擎移植而來。這個模塊僅供QtQml模塊內部使用。

(9)Qt Location,提供定位機制、地圖和導航技術、位置搜索等功能的QML和C++ API。

(10)Qt OpenGL,方便在Qt應用程序中使用OpenGL。該模塊僅僅為了便于程序從Qt 4移植到Qt 5才保留下來,如果需要在新的Qt 5程序中使用OpenGL相關技術,需要使用Qt GUI模塊中的QOpenGL。

(11)Qt Organizer,使用QML和C++ API訪問組織事件(Organizer Event)。Organizer API是Personal Information Management API的一部分,用于訪問Calendar信息。通過Organizer API可以實現從日歷數據庫訪問日歷時間、導入iCalendar事件或者將自己的事件導出到iCalendar。

(12)Qt Print Support,提供了對打印功能的支持。

(13)Qt Publish and Subscribe,為應用程序提供了對項目值的讀取、導航、訂閱等功能。

(14)Qt Quick,從Qt 4移植過來的QtDeclarative模塊,用于提供與Qt 4的兼容。如果需要開發新的程序,需要使用Qt Quick模塊。

(15)Qt Script,提供腳本化機制。這也是為了提供與Qt 4的兼容性,如果要使用腳本化支持,請使用QtQml模塊的QJS*類。

(16)Qt Script Tools,為使用Qt Script模塊的應用程序提供的額外組件。

(17)Qt Sensors,提供訪問各類傳感器的QML和C++接口。

(18)Qt Service Framework,提供客戶端發現其他設備的服務。Qt Service Framework為在不同平臺上發現、實現和訪問服務定義了一套統一的機制。

(19)Qt SVG,提供渲染和創建SVG文件的功能。

(20)Qt System Info,提供的一套API,用于發現系統相關的信息,比如電池使用量、鎖屏、硬件特性等。

(21)Qt Tools,提供了方便Qt開發的工具,包括Qt CLucene、Qt Designer、Qt Help以及Qt UI Tools。

(22)Qt Versit,提供了對Versit API的支持。Versit API是Personal Information Management API的一部分,用于QContacts和vCard以及QOrganizerItems和iCalendar之間的相互轉換。

(23)Qt Wayland,僅用于Linux平臺,用于替代QWS,包括Qt Compositor API(Server)和Wayland平臺插件(Client)。

這里需要強調一點,由于Qt的擴展模塊并不是Qt必須安裝的部分,因此Qt在未來版本中可能會提供更多的擴展模塊。

Qt儼然使得C++具有抗衡Java的能力。本章并不涉及Qt界面設計的具體內容,而是注重介紹Qt編程的通用基礎知識,而這些知識在以后使用Qt的時候經常會碰到。

主站蜘蛛池模板: 马山县| 石门县| 黄梅县| 柏乡县| 保康县| 邹平县| 夏河县| 永年县| 忻州市| 海伦市| 汪清县| 射阳县| 嵊州市| 永嘉县| 宜春市| 玉山县| 临西县| 隆德县| 织金县| 蓬莱市| 丰顺县| 社旗县| 安达市| 喀喇| 新津县| 绥芬河市| 城步| 闽侯县| 刚察县| 永新县| 察隅县| 抚州市| 理塘县| 阿拉善盟| 班玛县| 明溪县| 会泽县| 内丘县| 高碑店市| 肥城市| 陆河县|