http://www.devbean.net/2012/05/qt5-features/?replytocom=1161html
Qt 5 已經臨近發佈,其最大的特色就是模塊化。將原來龐大的模塊更細分爲不一樣的部分,同時,一個大版本的升級,固然少不了添加、刪除各個功能類。文本簡單介紹 Qt5 的特性,其具體內容來自 Qt5 官方 Wiki 的介紹。git
前面說過,Qt5 最大的特性在於模塊化。這麼多的模塊,Qt5 統稱爲 Qt Essentials。下面就來看看這些模塊到底是什麼吧!注意,有些模塊沒有在這裏列出,例如 SQL 等。請在這裏查看完整的 Qt5 模塊列表。正則表達式
【2012年10月30日】重要更新數據庫
根據 QTBUG-27736 作出的決定,如下模塊將從 Qt 5 中移除。「移除」的含義是,這些模塊將不屬於 Qt 5 的一部分,可是可能會做爲額外的附加功能提供。這些模塊是:canvas
所以,在閱讀本文其它部分時,請注意這項最新修改!後端
Qt Core 相似於 Qt4 中的 QtCore 模塊,包含了全部非 GUI 的功能。全部其餘的 Qt 模塊都基於這個模塊。與 Qt4 的 QtCore 不一樣之處在於,Qt Core 還包括了 XML 等 Qt4 中存在的部分。api
QStandardPaths 是 Qt4 的 QDesktopServices 的加強版,其 API 大部分基於 KDE4 的KStandardDirs。這個類提供了比 QDesktopServices 更多的功能,例如在某一存儲位置搜索給定文件等。服務器
QMimeDatabase 提供了判斷給定文件或內存區塊的 mimetype 的功能,原理是經過擴展名和(或)內容信息。網絡
MIME 類型數據庫由 freedesktop.org 的 shared-mime-info 項目提供。若是在當前系統上找不到 MIME 類型數據庫(例如在大多數 Windows 或 Mac OS X 系統上),Qt 則使用本身的拷貝。框架
QtCore 如今包含了一系列用於解析和生成 JSON 文檔的類。這些類容許你在 JSON 的內存二進制表現形式和標準文本之間進行相互轉換。這些類的目的固然就是提供 JSON 格式的支持。
QObject 如今支持一種額外的語法,能夠支持在編譯期對信號槽的鏈接進行檢查,好比 signal 和 接受者是否都存在、參數是否匹配等。目前咱們使用 C++ 模板實現了這一功能,不過當 C++11 得到全面支持以後,使用 C++11 新特性更爲方便。
這種新語法容許將一個信號鏈接到任意 C++ 接受者上,包括 C++11 lambda 表達式,成員函數以及 static 函數。這些接受者沒必要非得聲明爲 slots。
若是感興趣,能夠參考這篇文章獲取更多信息。
Qt5 新增長一個新的類 QRegularExpression,提供兼容 Perl 的正則表達式。這個類比 QRegExp 更強大,速度更快,支持更多特性,例如 lazy 和 possessive 謂詞、lookbehinds、具名捕獲組 named capturing groups 和循環匹配。
QtGui 新增了一系列新的類,其中最重要的是 QWindow,QScreen,QSurfaceFormat 和 QOpenGLContext。這些都做爲 QtWidgets 模塊的後端,以及直接供 QtQuick 2 使用。
在 Qt 4 的 QtOpenGL 模塊中最有用的類被移動到 QtGui 模塊中了,例如 QOpenGLFramebufferObject、QOpenGLShaderProgram、QOpenGLFunctions 等等。
用於替換 QGLContext 的 QOpenGLContext 則更爲通用,從 QWindow 中分離出來,支持更多用例,例如爲不一樣界面使用相同上下文。
咱們沒有將 QWindow 和 QOpenGLFramebufferObject 做爲 QPaintDevice 的子類,而是提供了一個新的 QOpenGLPaintDevice 類,使得可使用 QPainter 渲染當前邊界的上下文更簡單和靈活。
如今,使用 Qt5 提供的 QDnsLookup API 能夠查詢 DNS 記錄了。這個類並非爲了替換掉 QHostInfo,後者仍然具備根據 IP 地址獲取主機名的 API。QDnsLookup 更主要的是用於其它形式的 DNS 記錄,例如 SRV、TXT 以及 MX。這其實是替代了已經被廢棄的 Q3Dns API。
許多應用程序使用主機名和網絡層的透明協議來提供對 IPv6 的透明支持。綁定到 QHostAddress::Any 的 QTcpServer 和 QUdpSocket 能夠同時支持 IPv4 和 IPv6 鏈接。
QHostAddress::AnyIPv4 和 QHostAddress::AnyIPv6 則提供了單一協議的支持。使用 QNetworkAccessManager 的外出鏈接則會同時嘗試 IPv4 和 IPv6,直到有一個成功了。這將會幫助開發某一環境下某種協議受限狀況下的程序開發。
QTcpSocket 如今能夠在鏈接前綁定到某一 IP 地址,這使得在多穴環境下限制鏈接到特定接口成爲可能。
Qt5 移除了 QHttp API,緣由是功能重複。QNetworkAccessManager 足以提供相似的功能。
Qt5 移除了 QFtp API,緣由是其實現質量。QNetworkAccessManager 能夠用來提供 ftp url 的上傳下載操做。
這些 API 將由某一易於遷移的獨立形式提供。
Qt5 增長了訪問 SSL 認證的擴展,這將方便 Qt 框架開發人員,同時做爲將來的 Qt SSL 支持的基礎。
Qt5 增長了對 SSL 證書的驗證工具鏈,而不只僅是當鏈接到 SSL 服務器時才進行的操做。
Qt5 增長了對 buggy SSL 服務器的支持。這些修改如今已經被添加到了 Qt 4.8。
這使得應用程序能夠從 PKCS#11 加密狗這樣的設備讀取 private key,參見 http://git.iksaif.net/?p=qsslkey-p11.git;a=tree。
Qt 3D 是 Qt 5.0 新增模塊,雖然它在實驗室項目中已經存在好幾年,也向 Qt 貢獻了不少代碼。像 QMatrix4×四、QGLShaderProgram 和 QVector3D 這些類,都是來自 Qt 3D 項目的。Qt3D 基於 QML2 和 Qt OpenGL 的支持。
Qt3D 包含兩個庫:
如今,Qt3D 包含:
上面這些特性都由 QML API 提供。結合 QML 還能夠:
Qt Location 是 Qt 5.0 新增模塊,雖然它幾年前就是 Qt Mobility 的一部分。相比於 Qt Mobility 提供的版本,Location API 則有下面的幾點改變:
如今,不少遊戲鼠標提供了遠多於左右鍵和滾輪的按鍵。Qt 應用程序能夠接受來自更多鼠標按鍵的 Button 事件:在 XCB、XLIB 或 DirectFB 上達 27 個鼠標鍵;在 Wayland、Evdev 或 OS X 上達 16 個鼠標鍵;在 Blackberry/QNX 上達 8 個鼠標鍵。Qt 的 Windows 版本只能支持 5 個鼠標鍵,這是受 Windows 平臺限制的。
QtQuick 2.0 是一個重大升級。
QtQuick 2 基於 OpenGL 場景。下面的類直接替換掉 QtQuick 1 中的同名類:
新增相似 HTML5 canvas API 的對象 Canvas,提供幾點加強:
Canvas 支持大多數 HTML5 context2d API,具體細節能夠查看 canvas 文檔。
QtQuick.Particles 2.0 模塊包含了能夠組成 2D 粒子的元素。
使用 QtQuick 1 的特定 API 編寫 C++ 應用程序,例如 QDeclarativeView 或 QDeclarativeItem 必須在 .pro 文件中添加 quick1 模塊,例如 QT += quick1。
QDeclarativeView 和 QDeclarativeItem 頭文件如今位於 QtQuick 1模塊,例如:
Language: C++ (Qt) | |
0 1 |
#include <QtQuick1/QDeclarativeView> #include <QtQuick1/QDeclarativeItem> |