qt是一個針對桌面、嵌入式、移動裝置的一個跨平台的應用程式開發架構,支援的平台包括linux、os x、windows、vxworks、qnx、android、ios、blackberry(黑莓)、sailfish os(旗魚作業系統)等。
qt 1991年由trolltech-奇趣科技(成立于1994年)開發,2008年,trolltech被nokia收購,2012年,qt被digia收購。
qt是基于c++編寫的架構,它既可以開發gui程式,也可用于開發非gui程式,比如控制台工具和伺服器。預處理器,moc(全稱:meta-object compiler-元對象編譯器)用于擴充c++,如:信号和槽的特性。在編譯之前,先使用moc分析qt擴充的c++源檔案(檢測是否包含q_object宏),然後生成符合c++标準的源檔案(新檔案名将會由moc_加上原檔案名構成)。是以架構本身和應用程式/庫使用它能被任何符合标準c++的編譯器(像clang、gcc、 icc、mingw 和msvc)所編譯。
<a href="#%e4%bb%80%e4%b9%88%e6%98%afqt">什麼是qt</a>
<a href="#%e5%8f%91%e5%b1%95%e5%8f%b2">發展史</a>
<a href="#qt1-3">qt1-3</a>
<a href="#qt4">qt4</a>
<a href="#qt5">qt5</a>
<a href="#%e5%b9%b3%e5%8f%b0%e6%94%af%e6%8c%81">平台支援</a>
<a href="#%e4%bc%98%e7%82%b9">優點</a>
<a href="#qt-creator">qt creator</a>
<a href="#%e7%ae%80%e4%bb%8b">簡介</a>
<a href="#%e5%8a%9f%e8%83%bd%e5%92%8c%e4%bc%98%e5%8a%bf">功能和優勢</a>
<a href="#qt-designer">qt designer</a>
<a href="#qt-linguist">qt linguist</a>
<a href="#%e7%ae%80%e4%bb%8b-1">簡介</a>
<a href="#%e4%bd%bf%e7%94%a8%e6%96%b9%e5%bc%8f">使用方式</a>
<a href="#qt-assistant">qt assistant</a>
qt的第一個商業版本于1995年推出,随後qt的發展就很快了,下面是qt發展史上的一 些裡程碑,從之前的qt1.x開始到現在的qt5.x。
版本
釋出日期
1.40
10 july 1998
1.41
2 october 1998
1.42
19 december 1998
1.44
13 march 1999
2.0
26 june 1999
2.1
13 april 2000
2.2
7 december 2000
2.3
8 march 2001
3.0
16 october 2001
3.1
14 november 2001
3.2
24 july 2003
3.3
5 february 2004
trolltech在2005年6月28釋出了qt4.0,介紹了架構的五個新技術:
一套模闆容器類
為item views提供了一套模型 - 視圖 - 控制器體系結構
二維繪圖架構
為低級文本布局提供了unicode文本渲染器的公共api
基于action的mainwindow,包括:工具欄,菜單和停靠體系
新特性
4.1
20 december 2005
推出內建svg微小的支援,一個pdf的後端qt列印系統,以及其他一些功能。
4.2
4 october 2006
介紹了windows vista的支援,部件的css樣式支援,以及qgraphicsview架構-在螢幕上高效渲染成千上萬個2d對象,以取代qt3.x中的qcanvas類。
4.3
30 may 2007
改進了windows vista支援,改進了opengl引擎、svg檔案的生成,增加了qtscript(基于qsa的ecmascript腳本引擎)。
4.4
6 may 2008
特性包含了改進multimedia的支援(使用phonon),增強xml支援,集中共享記憶體的ipc架構,以及webkit內建。
4.5
3 march 2009
主要包括功能有qtcreator,改進圖形引擎,webkit的內建,opendocument格式寫入支援和新的許可選項,以及os x cocoa架構的支援。
4.6
1 december 2009
新的api架構-動畫、手勢、多點觸控。支援symbian、windows 7和mac os x 10.6,支援擴充一些unix系統。也取得了整體性能的改進。
4.7
21 september 2010
qml 和 qt quick
4.8
15 december 2011
qt的平台抽象化,支援單線程opengl,多線程http,優化了檔案系統通路。
qt5于2012年12月19正式釋出,這個新版本标志着平台的重大變化,硬體加速的顯示卡,qml和javascript發揮了重要作用。傳統的c++ - 僅qwidgets繼續得到支援,但沒有從新體系結構的性能改進中受益,qt5帶來了速度及使用者界面上的顯著改進,qt5開發架構移動至qt-project.org。外部開發者可以為digia公司送出更新檔,并讓他們審查。
5.0
19 december 2012
對qt4.x進行一系列重大改革。完成wayland的支援。
5.1
3 july 2013
新子產品以及android和ios實驗性的支援技術預覽。
5.2
12 december 2013
第一個官方支援android和ios的版本。
5.3
20 may 2014
集中于穩定性和可用性
5.4
10 december 2014
完整的winrt和windows phone支援。介紹基于chromium的qt webengine内部元件,将在未來的版本中取代qtwebkit。動态的gl圖形切換在windows(angle或opengl)背景,本地化的“外觀和感覺”在qtquick的控制在android平台的後端,引入qt webchannels提供qobject到websockets的橋梁。最初僅使用qt webkit的內建,但還正在5.5下進行qt webengine內建
5.5
1 july 2015
qt5.5根據官方網站提供的功能:新子產品: qt 3d、qt canvas 3d、qt location。過時的子產品的:qt webkit、qt declarative (qt quick 1)、qt script。藍牙api的最終版本,新的視訊過濾架構,camera和qml mediaplayer改善ios,适用于linux的nfc,ssl/tls改進qt network
5.6
alpha release: 8 september 2015 final release plan: 8 december 2015
值得注意的改進:qt core:一些性能改進,包括減少動态性能的記憶體使用情況和性能最佳化的qstring qt network:支援http重定向 qt gui:改進了跨平台的opengl es3.0和3.1 qt multimedia:添加qml類型播放清單 qt webengine:基于chromium 45,自定義url方案的api,攔截和阻止網絡請求,并跟蹤或阻止cookie qtqml:減少記憶體消耗 嵌入式平台:支援intel atom-based nucs 過時的子產品:qt script、qt enginio 已删除子產品:qt webkit, qt declarative (qt quick 1)
qt支援下述平台:
ms/windows - 95、98、nt4.0、me、2000、xp 、vista、win7、win8、win2008、win10
unix/x11-linux、sunsolaris、hp-ux、compaqtru64 unix、ibmaix、sgi irix、freebsd、bsd/os和其它很多x11平台
macintosh -mac os x
embedded - 有幀緩沖(framebuffer)支援的嵌入式linux平台,windows ce
symbian、symbian^3、symbian anna、symbian belle、meego
qt同x window上的 motif、openwin、gtk 等圖形界面庫和 windows平台上的 mfc、owl、vcl、atl是同類型的東西,但是 qt 具有下列優點:
優良的跨平台特性:
qt支援下列作業系統: microsoft windows 95/98, microsoft windows nt, linux, solaris, sunos, hp-ux, digital unix (osf/1, tru64), irix, freebsd, bsd/os, sco, aix, os390,qnx 等等。
面向對象
qt 的良好封裝機制使得 qt 的子產品化程度非常高,可重用性較好,對于使用者開發來說是非常 友善的。 qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件 之間的協同工作變得十分簡單。
豐富的 api
qt包括多達250個以上的c++類,還替供基于模闆的collections、serialization、 file、i/o device、 directory management、date/time 類。甚至還包括正規表達式的處理功能。
支援 2d/3d 圖形渲染,支援 opengl
大量的開發文檔
xml 支援
在釋出 qt 4.6 的同時,作為 qt 開發跨平台 ide 的qt creator也釋出了更新版本。qt creator 1.3 和 qt 4.6共同構成的 qt sdk,包含了開發跨平台應用程式所需的全部功能。
qt creator是一個用于qt開發的輕量級跨平台內建開發環境。qt creator可帶來兩大關鍵益處:提供首個專為支援跨平台開發而設計的內建開發環境 (ide),并確定首次接觸qt架構的開發人員能迅速上手和操作。即使不開發qt應用程式,qt creator也是一個簡單易用且功能強大的ide。
qt creator 包括項目生成向導、進階的 c++ 代碼編輯器、浏覽檔案及類的工具、內建了 qt designer、qt assistant、qt linguist、圖形化的 gdb 調試前端,內建 qmake 建構工具等。
qtcreator 主要是為了幫助新 qt 使用者更快速入門并運作項目,還可提高有經驗的 qt 開發人員的工作效率。
使用強大的 c++ 代碼編輯器可快速編寫代碼
文法辨別和代碼完成功能輸入時進行靜态代碼檢驗以及提示樣式上下文相關的幫助代碼折疊括号比對和括号選擇模式進階編輯功能
使用浏覽工具管理源代碼
內建了領先的版本控制軟體,包括 git、perforce 和 subversion開放式檔案,無須知曉确切的名稱或位置搜尋類和檔案跨不同位置或檔案沿用符号在頭檔案和源檔案,或在聲明和定義之間切換
為qt跨平台開發人員的需求而量身定制
內建了特定于 qt 的功能,如信号與槽 (signals & slots)圖示調試器, 對 qt 類結構可一目了然內建了 qt designer 可視化布局和格式建構器隻需單擊一下就可生成和運作 qt 項目
qt designer被稱為qt設計師,用于設計和建構圖形使用者界面(qt widgets)。你可以組合和自定義視窗或對話框(所見即所得),并使用不同的風格和分辨率進行測試。用qt designer建立的視窗部件和表格無縫內建程式設計代碼,采用qt信号和槽機制,這樣就可以輕松地配置設定圖形元素的行為。在qt設計師中設定的所有屬性可以動态地在代碼中進行更改。此外,類似插件推廣和自定義插件功能,可以使用自己的元件來使用qt designer。
注意:你也可以選擇使用qt quick來設計使用者界面,而不是qt widgets。這樣更容易寫各種各樣的應用。它可以完全定制外觀,觸摸反應的元素,流暢的動畫過渡,支援opengl圖形加速功能。如果剛接觸qt designer,可以看看qt設計師文檔。有關如何使用qt設計師,請參閱qt設計師快速入門。
qt linguist被稱為qt語言家。主要任務是讀取翻譯檔案、為翻譯人員提供友好的翻譯界面,是用于界面國際化的重要工具。它能幫助你很容易讀懂c++語言。
lupdate可以把.h、.cpp、.ui中需要翻譯的字元串提取出來形成.ts檔案,然後用linguist翻譯。用lerealse生成.qm。
翻譯一個含有tr()調用的qt應用程式需要以下三步:
1. 運作ludate,從應用程式的源代碼中提取所有使用者可見的字元串。
2. 使用qt linguist翻譯該應用程式。
3. 運作lrelease,生成二進制.qm檔案,應用程式可以使用qtranslator加載這個檔案。
如果開發工程中出現翻譯改動,可以多次執行此過程!
qt assistant被稱為qt助手,是qt自帶的一款可定制、可重新發行的幫助檔案浏覽器。它支援html檔案,使用者可以利用其定制自己的功能強大的幫助文檔浏覽器。