Qt官方信息
Qt官網:http://qt.digia.com/
Qt開源官網:http://download.qt.io/archive/qt
Qt最新版本下載:http://qt-project.org/downloads
Qt所有版本下載:ftp://ftp.qt-project.org/qt/source/
Qt Creator所有版本下載:ftp://ftp.qt-project.org/qtcreator/
一、Qt 與 Qt Creator 簡介
Qt是一個跨平台應用程序和 UI 開發框架。使用 Qt 您只需一次性開發應用程序,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統部署這些應用程序。Qt Creator 是全新的跨平台 Qt IDE,可單獨使用,也可與 Qt 庫和開發工具組成 一套完整的 SDK. 其中包括:高級 C++ 代碼編輯器,項目和生成管理工具,集成的上下文相關的幫助系統,圖形化調試器,代碼管理和瀏覽工具。
二、Qt 的歷史
- 1996 年 Qt 上市
- Qt 已成為數以萬計商業和開源應用程序的基礎
- Qt 的軟件授權機制具有經受市場檢驗的雙重授權(開源與商業)模式
- Qt Software 的前身為 Trolltech(奇趣科技)。 Trolltech (奇趣科技)始創於1994年
- Trolltech (奇趣科技)於 2008 年6月被 Nokia 收購,加速了其跨平台開發戰略
- 2012 年 8 月芬蘭IT業務供應商 Digia 全面收購諾基亞 Qt 業務及其技術
三、Qt 功能與特性
- 直觀的 C++ 類庫:模塊化 Qt C++ 類庫提供一套豐富的應用程序生成塊 (block),包含了構建高級跨平台應用程序所需的全部功能。具有直觀,易學、易用,生成好理解、易維護的代碼等特點。
- 跨桌面和嵌入式操作系統的移植性:使用 Qt,您只需一次性開發應用程序,就可跨不同桌面和嵌入式操作系統進行部署,而無須重新編寫源代碼,可以說 Qt 無處不在(QtEverywhere) 。
- 使用單一的源代碼庫定位多個操作系統;
- 通過重新利用代碼可將代碼跨設備進行部署;
- 無須考慮平台,可重新分配開發資源;
- 代碼不受擔憂平台更改影響的長遠考慮 ;
- 使開發人員專注於構建軟件的核心價值,而不是維護 API 。
- 具有跨平台 IDE 的集成開發工具:Qt Creator 是專為滿足 Qt 開發人員需求而量身定制的跨平台集成開發環境 (IDE)。Qt Creator 可在 Windows、Linux/X11 和 Mac OS X 桌面操作系統上運行,供開發人員針對多個桌面和移動設備平台創建應用程序。
- 在嵌入式系統上的高運行時間性能,占用資源少。
四、Qt Creator 功能和特性
- 復雜代碼編輯器:Qt Creator 的高級代碼編輯器支持編輯 C++ 和 QML (JavaScript)、上下文相關幫助、代碼完成功能、本機代碼轉化及其他功能。
- 版本控制:Qt Creator 匯集了最流行的版本控制系統,包括 Git、Subversion、Perforce、CVS 和 Mercurial。
- 集成用戶界面設計器:Qt Creator 提供了兩個集成的可視化編輯器:用於通過 Qt widget 生成用戶界面的 Qt Designer,以及用於通過 QML 語言開發動態用戶界面的 Qt Quick Designer。
- 項目和編譯管理 :無論是導入現有項目還是創建一個全新項目,Qt Creator 都能生成所有必要的文件。包括對 cross-qmake 和 Cmake 的支持。
- 桌面和移動平台:Qt Creator 支持在桌面系統和移動設備中編譯和運行 Qt 應用程序。通過編譯設置您可以在目標平台之間快速切換。
五、Qt 類庫
模塊化 Qt C++ 類庫提供一套豐富的應用程序生成塊(block),包含了生成高級跨平台應用程序所需的全部功能。
1.先進的圖形用戶界面(GUI):Qt 為您在桌面與嵌入式平台上開發先進的 GUI 應用程序,帶來所有需要的功能。Qt 使用所支持平台的本地化圖形API,充分利用系統資源並給予應用程序本地化的界面。
- 從按鈕和對話框到樹形視圖與表格都具有完整的控件(窗體);
- 自動縮放,字體、語言與屏幕定位識別布局引擎;
- 支持抗鋸齒、矢量變形以及可縮放矢量圖形(SVG);
- 具有樣式 API 和窗體樣式表,可完全自定義用戶界面;
- 支持嵌入式設備的硬件加速圖形和多重顯示功能。
2.基於 OpenGL 與 OpenGL 的 3D 圖形:OpenGL 是一個標准的圖形庫,用於構建跨平台和支持硬件加速的高性能可視化應用程序。雖然 OpenGL 完美支持 3D 圖形,但卻不支持創建應用程序用戶界面。Qt 通過與 OpenGL 的緊密集成解決了這一難題。
- 在您的應用程序中輕松加入 3D 圖形;
- 在嵌入式 Linux 與 Windows CE 平台上使用 OpenGL ES 和 OpenGL 繪畫引擎;
- 利用系統資源實現最佳圖形性能;
- 支持 Windows 平台上的 Direct3D。
3.多線程:多線程編程是一個執行資源密集型操作而不會凍結應用程序用戶界面的有效典范。Qt 的跨平台多線程功能簡化了並行編程,另外它附加的同步功能可以更加輕松地利用多核架構。
- 管理線程、數據和對象更加輕松;
- 基於 Qt 的信號與槽,實現跨線程類型安全的對象間通訊;
- 高端 API 可以編譯多線程程序而無須使用底端基元。
4.嵌入式設備的緊湊視窗系統:Qt 構建在標准的 API 基礎上,用於具有輕量級 Window 系統的嵌入式 Linux 設備。基於 Qt 的應用程序直接寫入 Linux 幀緩沖,解除了您對 X11 視窗系統的需求。
- 減少內存消耗,內存占用更小;
- 可以編譯移除不常使用的組件與功能
- 可以利用硬件加速圖形
- 在桌面系統上的虛擬幀緩沖可用於嵌入式開發與調試。
5.對象間通訊:在開發用戶圖形界面中,一個常見的、重復發生系統崩潰與問題的症結根源是如何在不同組件之間進行通信。對於該問題,Qt 的解決方案是信號與槽機制,即執行 Observer 設計模式。我們可以簡單理解為當特殊事件發生的時候,信號就被發出了,一個槽就是一個函數,被稱作特定信號的響應。
- 信號與槽機制是類型安全的(type safe);
- 任意信號都可以連接任意或多個槽,或跨多個線程;
- 簡化真正的組件編程。
6.2D 圖形:Qt 給您提供一個功能強大的 2D 圖形畫布,用以管理和集成大量的圖形元素。
- 高精度可視化大量元素;
- 將窗體互動嵌入至圖形場景中;
- 支持縮放、旋轉、動畫。
7.多媒體框架:Qt 使用 Phonon 多媒體框架為眾多的多媒體格式提供跨桌面與嵌入式操作系統的回放功能。Phonon 可以輕松將音頻與視頻回放功能加入到 Qt 應用程序當中,並且在每個目標平台上提供多媒體格式與框架。
- 從本地文件讀取媒體或讀取網絡上的流媒體;
- 提取 Mac 上的 QuickTime ,Windows 上的DirectShow 以及 Linux 上的 Gstreamer。
8.WebKit 集成:Qt WebKit 集成,即 Qt 集成了 WebKit 功能,WebKit 是 KDE 項目下基於 KHTML 的開放源 web 瀏覽器引擎。目前 Apple,Google 與 Nokia 等公司使用 Qt WebKit 集成,將 web 與本地內容和服務整合在單一的富應用程序當中。
- 快速創建整合實時 web 內容與服務的應用程序;
- 使用集成在本地代碼中的 HTML 與 Java Script;
- 完全控制跨平台的瀏覽器環境。
9.網絡連接:Qt 讓您網絡編程更簡單,並支持跨平台網絡編程。
- 完整的客戶/服務器插口提取;
- 支持 HTTP,FTP,DNS 與異步 HTTP 1.1;
- 無論 HTML 和 XML 或圖象與媒體文件,它都可以存取所有類型的數據。
10.XML:Qt 為XML 文件以及SAX 和 DOM 協議的C++實現,提供了一個流媒體文件讀寫器。同時 Qt 還包含了 XQuery – 一個簡單的類似 SQL 的查詢語言,用於解析 XML 文件來選擇和聚合所需要的 XML 元素,並且將它們轉換成 XML 輸出或其它格式的輸出。
- 僅需少數幾行代碼便可實現先進的 XML 查詢;
- 完全支持 XQuery 1.0 和 XPath 2.0;
- 在您自己的應用程序中從 XML 查詢、抽取和轉換數據。
11.腳本引擎:Qt 包含一個完全集成 ECMA 標准的腳本引擎。 QtScript 提供 QObject 集成,把 Qt 的信號與槽機制整合成腳本,並且實現了 C++ 與腳本的集成。
- 基於 ECMA 標准的腳本語言(ECMAScript 3 是 JavaScript1.5 的基礎);
- 為簡化的對象間通訊使用 Qt 的信號與槽機制;
- 開創新的契機將腳本與您的 Qt 應用程序相集成。
12.數據庫:Qt 幫助您將數據庫與您的Qt應用程序無縫集成。Qt 支持所有主要的數據驅動,並可讓您將 SQL 發送到數據庫服務器,或者讓 Qt SQL 類自動生成 SQL 查詢。
- 支持所有主要的數據庫驅動;
- 以多種視圖或數據識別表單方式顯示數據。
六、Qt Quick 介紹
Qt Quick 是在 Qt4.7 中被引進的一項技術。Qt Quick 是一種高級用戶界面技術,開發人員和設計人員可用它協同創建動畫觸摸式用戶界面和應用程序。它由三部分構成:1.QML:像 JavaScript 一樣的聲明式語言;2. Qt Creator:在 Qt IDE 中的直觀工具;3. Qt Declarative:強大的 C++ 模塊。
1.主要組成:
QML:基於 JavaScript 的直觀語言 :
- QML 是一種簡便易用的語言,開發人員與用戶界面設計人員無需任何 C++ 知識,即可用其描繪出用戶界面的外觀和功能。
- 面向開發人員和設計人員的共享工具:Qt Creator IDE 2.1 版將集成一套開發人員與用戶界面設計人員可共享,用以創建和實施 Qt Quick 項目的通用工具。
- 通過 C++ 推動 QML 應用程序:在 Qt 庫中的全新 Declarative 模塊支持生成動態可定制的用戶界面,以及通過 C++ 拓展 QML 應用程序。
2.功能特點:
- 快速開發動畫式流暢多變的用戶界面:通過直觀的 QML 語言和一套豐富的 QMLElements—UI 和行為生成塊——您可以快速創建出令人印象深刻的用戶界面,比您想象的還要快。
- 無需 C++ 知識:如果您具有 JavaScript 的經驗或掌握基本的網絡技術 (如 HTML 和 CSS),您就可以通過 QML 取得非常不錯的成果。
- 瞄准數以百萬計的觸摸屏設備:使用 Qt Quick,您可以為數以百萬計的 Symbian 和 MeeGo 設備生成應用程序,或為各種類型的觸摸屏消費類電子設備創建用戶界面。
3.應用領域:
- 汽車信息娛樂系統 UI:Cybercom Group 的用戶界面設計人員與開發人員嘗試使用 Qt Quick 為其汽車信息娛樂平台設計 UI - 並取得了令人滿意的結果。
- 社交媒體電視:mixd.tv 使用 Qt Quick 為其跨平台網絡電視應用程序創建 UI,其用戶可以通過社交媒體頻道訪問和共享在線視頻的內容。
- 聯網汽車:Qt 的認證合作伙伴 Digia 很快學會了 Qt Quick 並用其創建出了包括導航、電話、游戲和音樂功能的高級汽車 UI。
Qt Widgets、QML、Qt Quick的區別,可以看這篇博客:Qt Widgets、QML、Qt Quick的區別。
參考: