Qt 5模塊簡介

Qt 5 與 Qt 4 最大的一個區別之一是底層架構有了修改。Qt 5 引入了模塊化的概念,將衆多功能細分到幾個模塊之中。Qt 4 也有模塊的概念,但是是一種很粗的劃分,而 Qt 5 則更加細化。本節主要對 Qt 5 的模塊進行一個簡單的介紹,以便以後大家需要哪些功能的時候知道到哪個模塊去尋找。


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


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



  • Qt Core,提供核心的非 GUI 功能,所有模塊都需要這個模塊。這個模塊的類包括了動畫框架、定時器、各個容器類、時間日期類、事件、IO、JSON、插件機制、智能指針、圖形(矩形、路徑等)、線程、XML 等。所有這些類都可以通過 <QtCore> 頭文件引入。
  • Qt Gui,提供 GUI 程序的基本功能,包括與窗口系統的集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖像、字體、拖放等。這些類一般由 Qt 用戶界面類內部使用,當然也可以用於訪問底層的 OpenGL ES 圖像 API。Qt Gui 模塊提供的是所有圖形用戶界面程序都需要的通用功能。
  • Qt Multimedia,提供視頻、音頻、收音機以及攝像頭等功能。這些類可以通過 <QtMultimedia> 引入,而且需要在 pro 文件中添加 QT += multimedia。
  • Qt Network,提供跨平臺的網絡功能。這些類可以通過 <QtNetwork> 引入,而且需要在 pro 文件中添加 QT += network。
  • Qt Qml,提供供 QML(一種腳本語言,也提供 JavaScript 的交互機制) 使用的 C++ API。這些類可以通過 <QtQml> 引入,而且需要在 pro 文件中添加 QT += qml。
  • Qt Quick,允許在 Qt/C++ 程序中嵌入 Qt Quick(一種基於 Qt 的高度動畫的用戶界面,適合於移動平臺開發)。這些類可以通過 <QtQuick> 引入,而且需要在 pro 文件中添加 QT += quick。
  • Qt SQL,允許使用 SQL 訪問數據庫。這些類可以通過 <QtSql> 引入,而且需要在 pro 文件中添加 QT += sql。
  • Qt Test,提供 Qt 程序的單元測試功能。這些類可以通過 <QtTest> 引入,而且需要在 pro 文件中添加 QT += testlib。
  • Qt Webkit,基於 WebKit2 的實現以及一套全新的 QML API(順便說一下,Qt 4.8 附帶的是 QtWebkit 2.2)。


Qt 擴展模塊則有更多的選擇:



  • Qt 3D,提供聲明式語法,在 Qt 程序中可以簡單地嵌入 3D 圖像。Qt 3D 爲 Qt Quick 添加了 3D 內容渲染。Qt 3D 提供了 QML 和 C++ 兩套 API,用於開發 3D 程序。
  • Qt Bluetooth,提供用於訪問藍牙無線設備的 C++ 和 QML API。
  • Qt Contacts,用於訪問地址簿或者聯繫人數據庫的 C++ 和 QML API。
  • Qt Concurrent,封裝了底層線程技術的類庫,方便開發多線程程序。
  • Qt D-Bus,這是一個僅供 Unix 平臺使用的類庫,用於利用 D-Bus 協議進行進程間交互。
  • Qt Graphical Effects,提供一系列用於實現圖像特效的類,比如模糊、銳化等。
  • Qt Image Formats,支持圖片格式的一系列插件,包括 TIFF、MNG、TGA 和 WBMP。
  • Qt JS Backend,該模塊沒有公開的 API,是 V8 JavaScript 引擎的一個移植。這個模塊僅供 QtQml 模塊內部使用。
  • Qt Location,提供定位機制、地圖和導航技術、位置搜索等功能的 QML 和 C++ API。
  • Qt OpenGL,方便在 Qt 應用程序中使用 OpenGL。該模塊僅僅爲了程序從 Qt 4 移植到 Qt 5 的方便才保留下來,如果你需要在新的 Qt 5 程序中使用 OpenGL 相關技術,需要使用的是 QtGui 模塊中的 QOpenGL。
  • Qt Organizer,使用 QML 和 C++ API 訪問組織事件(organizer event)。organizer API 是 Personal Information Management API 的一部分,用於訪問 Calendar 信息。通過 Organizer API 可以實現:從日曆數據庫訪問日曆時間、導入 iCalendar 事件或者將自己的事件導出到 iCalendar。
  • Qt Print Support,提供對打印功能的支持。
  • Qt Publish and Subscribe,爲應用程序提供對項目值的讀取、導航、訂閱等的功能。
  • Qt Quick 1,從 Qt 4 移植過來的 QtDeclarative 模塊,用於提供與 Qt 4 的兼容。如果你需要開發新的程序,需要使用 QtQuick 模塊。
  • Qt Script,提供腳本化機制。這也是爲提供與 Qt 4 的兼容性,如果要使用腳本化支持,請使用 QtQml 模塊的 QJS* 類。
  • Qt Script Tools,爲使用了 Qt Script 模塊的應用程序提供的額外的組件。
  • Qt Sensors,提供訪問各類傳感器的 QML 和 C++ 接口。
  • Qt Service Framework,提供客戶端發現其他設備的服務。Qt Service Framework 爲在不同平臺上發現、實現和訪問服務定義了一套統一的機制。
  • Qt SVG,提供渲染和創建 SVG 文件的功能。
  • Qt System Info,提供一套 API,用於發現系統相關的信息,比如電池使用量、鎖屏、硬件特性等。
  • Qt Tools,提供了 Qt 開發的方便工具,包括 Qt CLucene、Qt Designer、Qt Help 以及 Qt UI Tools 。
  • Qt Versit,提供了對 Versit API 的支持。Versit API 是 Personal Information Management API 的一部分,用於 QContacts 和 vCard 以及 QOrganizerItems 和 iCalendar 之間的相互轉換。
  • Qt Wayland,僅用於 Linux 平臺,用於替代 QWS,包括 Qt Compositor API(server)和 Wayland 平臺插件(clients)。
  • Qt WebKit,從 Qt 4 移植來的基於 WebKit1 和 QWidget 的 API。
  • Qt Widgets,使用 C++ 擴展的 Qt Gui 模塊,提供了一些界面組件,比如按鈕、單選框等。
  • Qt XML,SAX 和 DOM 的 C++ 實現。該模塊已經廢除,請使用 QXmlStreamReader/Writer。
  • Qt XML Patterns,提供對 XPath、XQuery、XSLT 和 XML Schema 驗證的支持。

這裏需要強調一點,由於 Qt 的擴展模塊並不是 Qt 必須安裝的部分,因此 Qt 在未來版本中可能會提供更多的擴展模塊,這裏給出的也僅僅是一些現在確定會包含在 Qt 5 中的一部分,另外還有一些,比如 Qt Active、Qt QA 等,則可能會在 beta 及以後版本中出現。


Qt 4 也分成若干模塊,但是這些模塊與 Qt 5 有些許多不同。下面是 Qt 4 的模塊:



  • QtCore,Qt 提供的非 GUI 核心類庫,這一部分與 Qt 5 大致相同,只不過 Qt 4 的 core 類庫中並不包含 JSON、XML 處理等。
  • QtGui,圖形用戶界面組件,這個模塊相當於 Qt 5 的 QtGui 與 QtWidgets 兩個模塊的總和。
  • QtMultimedia,多媒體支持,類似 Qt 5 的相關部分。
  • QtNetwork,網絡支持,類似 Qt 5。
  • QtOpenGL,提供對 OpenGL 的支持。在 Qt 5 中,這部分被移植到 QtGui 模塊。
  • QtOpenVG,提供對 OpenVG 的支持。
  • QtScript,提供對 Qt Scripts 的支持。Qt Script 是一種類似於 JavaScript 的腳本語言。在 Qt 5 中,推薦使用 QtQml 的 JavaScript 部分。
  • QtScriptTools,爲 Qt Script 提供的額外組件。
  • QtSql,提供對 SQL 數據庫的支持。
  • QtSvg,提供對 SVG 文件的支持。
  • QtWebKit,提供顯示和編輯 Web 內容。
  • QtXml,XML 處理,這部分在 Qt 5 中被添加到了 QtCore。
  • QtXmlPatterns,提供對 XQuery、XPath 等的支持。
  • QtDeclarative,用於編寫動畫形式的圖形用戶界面的引擎。
  • Phonon,多媒體框架。
  • Qt3Support,Qt 3 兼容類庫。

下面是 Qt 4 的一些工具模塊:



  • QtDesigner,用於擴展 Qt Designer。
  • QtUiTools,用於在自己的引用程序中處理 Qt Designer 生成的 form 文件。
  • QtHelp,聯機幫助。
  • QtTest,單元測試。

下面是專門供 Windows 平臺的模塊:



  • QAxContainer,用於訪問 ActiveX 控件。
  • QAxServer,用於編寫 ActiveX 服務器。

下面是專門供 Unix 平臺的模塊:



  • QtDBus,使用 D-Bus 提供進程間交互。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章