Qt 5簡介

                                    Qt 5簡介

Qt 5概要介紹

            在Qt 5這個版本中,Qt Quick成爲了Qt的核心。但是Qt 5也繼續提供了本地C++強大的功能來完成更好的用戶體驗,也提供了對OpenGL/OpenGL ES圖形加速的完全支持。

       Qt 5是自2005年發佈的Qt 4.x系列之後的第一個做出大改動的版本。這次的改變主要是使得Qt更加適應未來的需求。

       Qt 5.0版本發佈了完整的SDK,覆蓋了Windows、Mac OS X以及Linux。這表明Qt 5.0版本發佈的內容包括:Qt 5框架、IDE(Qt Creator)、示例以及文檔。

       Qt 5的成功源於Qt 4,因此Qt儘可能的兼容Qt 4.x系列。

       Qt 5在架構上清除了內部的一些設計,並且使得Qt 5更加的模塊化,更容易學習,更加快速。Qt 4.x系列的應用程序只需要做很少的改變以及簡單的用Qt 5重新編譯一下即可支持Qt 5。

       Qt 5的一些包(主要是開發框架)是隨着Qt Creator 2.6.1版本發佈的,該版本的Qt Creator也是使用Qt 5編譯的。

距離Qt 4發佈已經過去7年了,並且目前Qt 4還在停留在主要的分支Qt 4.8版本。

       現在Qt第5個大的版本發佈了,提供了4個主要的特性:

(1)    令人驚奇的圖像處理和表現能力:特別是在特定的環境下,例如:嵌入式和移動設備上。Qt Quick 2提供了基於Open GL的場景視圖,一個粒子系統以及一些渲染特效的集合。Qt Multimedia和Qt GraphicalEffects更加促進了這些特性。

(2)    開發者的生產力和靈活性:使得JavaScript和QML成爲一等公民,同時也繼續保留了以C++作爲基礎以及對Qt Widget的支持。附加的Qt WebKit2使得HTML5的開發者更加輕鬆。

(3)    跨平臺的可移植性:由於Qt的核心模塊和附加模塊使用了新的結構,以及QPA的合併,使得OS開發者的開發工作更加容易了。最終的目標就是使得Qt可以在所有的環境下運行。下一步的工作就是在iOS和Android上提供完整的Qt支持,這個工作已經開始。

(4)    開放式的開發以及開放式的管理確保了更加廣泛的開發者開發和測試Qt 5。

Qt 5包含如下模塊:

核心模塊:Qt Core,Qt GUI,Qt Multimedia,Qt Netword,Qt Qml,Qt Quick,Qt SQL,Qt Test,Qt WebKit,Qt WebKit Widgets,Qt Widgets。

附加模塊:Qt D-Bus,Qt Graphical Effects,Qt ImageFormats,Qt OpenGL,Qt Print Support,Qt Declarative,Qt Script,Qt Script Tools,Qt SVG,Qt XML,Qt XML Patterns。

說明:

       Qt的核心模塊定義了Qt在所有平臺上的基礎。它們在Qt所支持的所有開發平臺以及測試的目標平臺上都是可獲取的。它們在Qt 5期間都會保持源代碼以及二進制兼容。核心模塊對大多數的Qt應用都是通用且有用的。爲某一個特定目的實現的模塊都放在了Qt的附加模塊中,即使這個模塊在所有支持的平臺上都可獲取。

Qt的核心模塊列表如下:



       Qt的附加模塊爲某些特定的目的帶來了額外的價值。這些模塊也許只是在某些開發平臺或者目標平臺上可用。這些模塊中的一部分可能只包含在Qt針對某些特定平臺的發行版本中。

Qt的附加模塊列表如下:



接下來在介紹一下Qt的工具部分。

       開發Qt應用程序使用到的工具是作爲Qt的一部分隨Qt版本一起發佈的。官方發佈的工具支持所有的開發平臺。

Qt的工具列表如下:


Qt 5包含的新特性

接下來,我們看看Qt 5都包含哪些新的特性,主要的新特性如下表:



現在我們來逐條詳述這些新的特性:

(1)    Amazing Graphics Capability andPerformance

Qt 5使用基於OpenGL的場景視圖來加速Qt Quick的圖像,使得即使是在硬件受限的移動和嵌入式設備中,用戶界面也可以使用動畫、圖像效果以及粒子系統。



渲染引擎架構的改變所獲得的好處也可以從以下示例看出來:



(2)    Qt Quick in Qt 5

        Qt Quick爲開發QML應用程序提供了必需的基礎部件。該技術的最新版本(v2.0)同樣引進了一系列的C++類作爲Qt Quick 1中QDeclarative等價類的代替物。Qt Quick中新的特性包括:

*Canvas:Canvas提供了類似HTML5中Canvas的API,以及一些額外的特性;

*Shader Effects:該特性允許GLSL的渲染器可以被集成到QML中,並被應用在界面組件以及圖像上;

*Particle Effects:用於創建一個多樣化的2D粒子系統;

*Sprites:它可以在2D動畫對象中使用,並且可以作爲粒子系統的源;

*離線存儲:離線存儲是HTML5Web數據庫API,在Qt 5中它是JavaScript API用於在Qt Quick應用程序中存儲數據;

*Window:Window提供了頂層的窗口以及屏幕類型用於獲取屏幕的分辨率和其它的細節。這在使用Qt Quick開發桌面程序十分有用;

*新的渲染架構:對性能進行優化的基於OpenGL的新的渲染架構。



Qt Graphical Effects模塊提供了一系列可應用在Qt Quick應用程序中的ready-made效果,包括soft drop shadow,blur,gow以及colorize。



(3)    WebKit and HTML5

Qt WebKit是基於開源的WebKit項目的一個web內容渲染引擎。WebKit廣泛的支持標準的web技術。Qt 的WebKit模塊提供了與Qt Quick和傳統的widgets的集成。該模塊將最新的HTML5的優勢集成到Qt 5中,這些優勢包括:CSS過濾器、動畫、視頻、Canvas、WebGL以及HTML視頻。

(4)    Multimedia

Qt的Multimedia提供了非常多的QML類型和C++類用以處理多媒體內容。它同樣提供了必需的API用於獲取攝像頭和收音機功能。Qt 5將Qt Multimedia模塊放在了核心模塊中,因此它支持所有主要平臺。


(5)    Modularized Qt Libraries

Qt 5將Qt庫分割到幾個特定的庫和模塊中。這意味着一個應用程序可以選擇它需要的庫來使用、編譯和部署。

對於Qt模塊的列表在前面已經介紹過了。

(6)    Widgets in Qt 5

在Qt 5中Qt Widgets已經被劃分爲一個單獨的模塊了。它也是核心模塊之一。


(7)    Qt Platform Abstraction

Qt中對於窗口系統依賴的部分已經在Qt5中被完全重寫了,基於Qt Platform Abstraction:一個插件架構,允許Qt動態的加載它所處於的窗口系統。這將提供以下幾點好處:

*使得窗口系統集成的基礎代碼處於中心,可以被所有平臺重用;

*簡化將Qt移植到一個新平臺所要做的工作;

*將對窗口系統的依賴從Qt中移除,使得在多個窗口系統下運行的Qt程序的二進制保持一致成爲可能。例如:QtLinux二進制文件可以運行在X11和Wayland上。

(8)    New Connection Syntax

除了衆所周知且依然可用的連接信號和槽的方式外,對QObject::connect新的重載已經添加到Qt5中,新的語法允許使用指向成員函數的指針來連接信號和槽:


新的語法提供了對信號和槽的兼容性的編譯時檢查;如果在參數類型之間存在隱式轉換,那麼這種轉換就會自動執行;新的語法也能解決由於typedef或namespaces引起的許多問題。

另外,如果你的編譯器支持C++11,你甚至可以直接(將信號)連接到一個lambda函數:


(9)    Connectivity and Networking

Qt 5提供了對IPv6更好的支持以及兩種模式的網絡。絕大多數的應用程序使用主機名和網絡層傳輸協議現在可以獲取IPv6的傳輸支持。這些應用程序可以選擇同時接受IPv4和IPv6的連接或者是僅僅綁定到兩種連接類型中的一種。在使用QNetworkAccessManager發出的HTTP連接中,IPv4和IPv6連接是並行嘗試,並且最先連接成功的那個就投入使用。這對於在這兩種連接類型中的一種被限制連接的環境特別有用。

Qt 5同樣提供了更好的方式來處理基於套接字的TCP連接以及SSL認證。這意味着開發者現在可以:

*在連接建立之前將一個TCP套接字綁定到一個IP上;

*校驗SSL認證鏈;

*訪問遺留系統

嚴格的客戶端認證是許多處理關鍵數據的應用程序首要考慮的問題。在Qt 5中支持的不透明的私匙使得應用可以從蛇蟲中讀取私匙,例如:PKCS#11軟件保護器用於嚴格的客戶端認證。Qsslkeyexample示範了從設備中讀取私匙。

(10)  JSON Support

那些使用簡單數據結構存儲少量數據的Qt應用程序現在可以選擇使用處於複雜數據庫後端(需要必需的驅動或者插件訪問數據)上層的JSON文檔。JSON是從JavaScript衍生出來的基於文本模式的開放標準,這使得它成爲了QML應用程序的首選。

Qt Core提供了一系列的類用於解析和生成JSON文檔。這些類同樣允許你在存於內存中的JSON數據和標準的JSON格式的文檔之間進行轉換。目標是使得對JSON的同樣操作能更加快速。

(11)    User Input

Qt 4已經在C++中提供了對多點觸控輸入的處理。Qt 5將這種支持擴展到了Qt Quick中,包括了觸點的所有信息:觸點位置、壓力以及速度。

在Qt 5中,鼠標事件的處理在它的預處理器中被加強了。在Qt Quick中,應用程序對於處理鼠標事件有着更多的控制權。在QML文檔中的鼠標區域可以傳遞鼠標滾輪和點擊事件,同樣也可以忽略傳遞的時間。

除了這些,Qt 5在支持多鼠標按鍵的平臺上也添加了對多鼠標按鍵的支持。這主要是爲了支持使用Qt開發遊戲應用的場景。


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