新手必學(xué) Qt 類簡(jiǎn)介
Qt 簡(jiǎn)介
Qt (發(fā)音同 cute)是一個(gè)跨平臺(tái)的C++開(kāi)發(fā)工具,有時(shí)又被稱為C++部件工具箱。Qt被用在KDE桌面環(huán)境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的開(kāi)發(fā)中。它是挪威Qt Software 的產(chǎn)品,2008年6月17日被芬蘭的諾基亞(Nokia)公司收購(gòu),以增強(qiáng)該公司在跨平臺(tái)軟件研發(fā)方面的實(shí)力。
使用Qt開(kāi)發(fā)的軟件,可以在任何支持的平臺(tái)上編譯與運(yùn)行,而不需要修改源代碼??梢詫?shí)現(xiàn)本平臺(tái)的圖形界面風(fēng)格,也可實(shí)現(xiàn)其它平臺(tái)的圖形界面風(fēng)格。比如可以在Microsoft Windows平臺(tái)下編譯出具有蘋(píng)果公司Mac OS圖形界面風(fēng)格的應(yīng)用程序。
經(jīng)過(guò)多年發(fā)展,Qt不但擁有了完善的C++圖形庫(kù),而且近年來(lái)的版本逐漸集成了數(shù)據(jù)庫(kù)、OpenGL庫(kù)、多媒體庫(kù)(Phonon)、網(wǎng)絡(luò)庫(kù)、腳本庫(kù)、XML庫(kù)、WebKit庫(kù)等等,其內(nèi)核庫(kù)也加入了進(jìn)程間通信、多線程等模塊,極大的豐富了Qt開(kāi)發(fā)大規(guī)模復(fù)雜跨平臺(tái)應(yīng)用程序的能力,真正意義上實(shí)現(xiàn)了其研發(fā)宗旨“Code Less; Create More; Deploy Anywhere.”。
Qt中使用了C++的非標(biāo)準(zhǔn)擴(kuò)展,用在編譯前增加一個(gè)名為moc的預(yù)處理器來(lái)實(shí)現(xiàn),moc將Qt代碼處理成標(biāo)準(zhǔn)C++代碼。
Qt開(kāi)放源代碼,并且提供自由軟件的用戶協(xié)議。使得它可以被廣泛地應(yīng)用在各平臺(tái)上的開(kāi)放源代碼軟件開(kāi)發(fā)中。
2009年5月11日,諾基亞Qt Software 宣布 Qt源代碼管理系統(tǒng)面向公眾開(kāi)放,Qt 開(kāi)發(fā)人員可通過(guò)為 Qt 以及與 Qt 相關(guān)的項(xiàng)目貢獻(xiàn)代碼、翻譯、示例以及其他內(nèi)容,協(xié)助引導(dǎo)和塑造 Qt未來(lái)的發(fā)展。為了便于這些內(nèi)容的管理,Qt Software 啟用了基于 Git 和 Gitorious 開(kāi)源項(xiàng)目的Web 源代碼管理系統(tǒng)。
在推出開(kāi)放式 Qt 代碼庫(kù)的同時(shí),Qt Software 在其網(wǎng)站發(fā)布了其產(chǎn)品規(guī)劃(Roadmap)。其中概述了研發(fā)項(xiàng)目中的***功能,展現(xiàn)了現(xiàn)階段對(duì) Qt 未來(lái)發(fā)展方向的觀點(diǎn),以期鼓勵(lì)社區(qū)提供反饋和貢獻(xiàn)代碼,共同引導(dǎo)和塑造 Qt 的未來(lái)。
Qt 提供三種授權(quán)方式[2]:
Qt 商業(yè)版 – Qt 商業(yè)授權(quán)適用于開(kāi)發(fā)專屬和/或商業(yè)軟件。此版本適用于不希望與他人共享源代碼,或者遵循 GNU 寬通用公共許可證 (LGPL) 2.1 版或 GNU GPL 3.0 版條款的開(kāi)發(fā)人員。
GNU LGPL v. 2.1- Qt 4.5.0 及以后的版本開(kāi)始遵循 GNU LGPL,這些版本的 Qt 適用于開(kāi)發(fā)專屬或開(kāi)源 Qt 應(yīng)用程序,前提條件是必須遵循 GNU LGPL 2.1 版的條款。
GNU GPL v. 3.0 – 如果您希望將 Qt 應(yīng)用程序與受 GNU 通用公共許可證 (GPL) 3.0 版本條款限制的軟件一同使用,或者您希望 Qt 應(yīng)用程序遵循該 GNU許可證版本的條款,則此版本 Qt 適用于開(kāi)發(fā)此類 Qt 應(yīng)用程序。
關(guān)于如何正確選擇合適的Qt授權(quán)協(xié)議,可以參考: Qt GPL, LGPL&Commercial License [3]。
支持平臺(tái)
Qt for X11:用于 X Window System (Unix、Linux、BSD)。支持 KDevelop IDE 集成
Qt for Mac:用于 Apple Mac OS X。支持 Cocoa 和 Carbon 框架。支持以 Xcode 編輯、編譯和測(cè)試。
Qt for Windows:用于 Microsoft Windows。支持 Visual Studio 集成
Qt for Embedded Linux:用于嵌入式Linux??梢酝ㄟ^(guò)編譯移除不常使用的組件與功能。通過(guò)自己的視窗系統(tǒng)QWS,不需依賴X Window System,直接寫(xiě)入Linux 幀緩沖??梢詼p少存儲(chǔ)器消耗。并提供虛擬幀緩沖 QVFb,方便在桌面系統(tǒng)上進(jìn)行嵌入式測(cè)試。
Qt for Windows CE:用于 Windows CE
Qt for S60:用于 S60
語(yǔ)言綁定除了C++外,Qt還為其它多種計(jì)算機(jī)語(yǔ)言提供了應(yīng)用程序接口,您也可以使用這些語(yǔ)言開(kāi)發(fā)Qt應(yīng)用程序。
PyQt:Python綁定
QtRuby:Ruby綁定
Qt Jambi:Java綁定
Qyoto:C# 或其他 .NET 語(yǔ)言綁定,同時(shí)也是Kimono(KDE API 的 .NET 綁定)的基礎(chǔ)。
QtAda:Ada綁定
FreePascal QT4:Pascal綁定
Perl Qt4:Perl綁定
PHP Qt:PHP綁定
Qt Haskell:Haskell綁定
lqt:Lua綁定
Qt 的 hello world
- Qt 的 hello world
- #include <QtGui/QApplication>
- #include <QtGui/QLabel>
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QLabel label("Hello, world!");
- label.show();
- return app.exec();
- }
#p#
Qt 附帶的工具
Qt Creator,輕量級(jí)的Qt/C++ IDE開(kāi)發(fā)環(huán)境。
Qt Designer,界面設(shè)計(jì)師。
Qt Assistant,Qt文檔。
Qt Liguist,翻譯工具,使得非開(kāi)發(fā)的翻譯人員亦可進(jìn)行翻譯
qmake,跨平臺(tái)構(gòu)建工具,可簡(jiǎn)化跨不同平臺(tái)進(jìn)行項(xiàng)目開(kāi)發(fā)的構(gòu)建過(guò)程。qmake 可以自動(dòng)生成 Makefile,還可同樣生成 Microsoft Visual Studio 項(xiàng)目檔
QVFb,虛擬幀緩存設(shè)備,模擬framebuffer設(shè)備(尺寸、色深),還可以通過(guò)skin模擬硬件鍵盤(pán)的布局(包括特殊的按鍵),可以便捷在桌面系統(tǒng)機(jī)器上開(kāi)發(fā)嵌入式程序
使用Qt開(kāi)發(fā)的程序一些出名的例子如下:
谷歌地球,三維虛擬地圖軟件。
eva,Linux版QQ聊天軟件。
KDE,著名的桌面環(huán)境。
KDELibs,一個(gè)許多KDE程序都使用的共享庫(kù),如Amarok、K3b、KDevelop、KOffice等。
Last.fm播放器,著名的互聯(lián)網(wǎng)音樂(lè)社區(qū)網(wǎng)站的桌面客戶端。
LMMS,一個(gè)開(kāi)放源碼的音樂(lè)編輯軟件
LyX,使用Qt作為界面的LaTeX軟件。
MythTV,開(kāi)源的數(shù)字視頻錄制軟件。
Opera,著名的網(wǎng)頁(yè)瀏覽器。
Qterm,Linux下的BBS軟件。
Scribus,桌面排版軟件。
Skype,一個(gè)使用人數(shù)眾多的基于P2P的VOIP聊天軟件。
VirtualBox,虛擬機(jī)程序。
Xconfig,Linux的Kernel配置工具
VLC多媒體播放器,一個(gè)體積小巧、功能強(qiáng)大的開(kāi)源媒體播放器,從0.9版開(kāi)始有Qt界面。
Adobe Photoshop Album
Qt Extended
Qt 相關(guān)資料
Qt 官方網(wǎng)站 - http://qt.nokia.com/
Qt 中文官方網(wǎng)站 - http://qt.nokia.com/title-cn
Qt 在線文檔 - http://doc.qt.nokia.com/
Qt 社區(qū) - http://qtcentre.org/
Qt for S60/Symbian開(kāi)發(fā) - http://www.forum.nokia.com/Resources_and_Information/Tools/Runtimes/Qt_for_S60/
Qt for Maemo (N800/N810) 開(kāi)發(fā) - http://qt4.garage.maemo.org/
Qt on Facebook – Click here to join
Qt on Twitter – Click here to follow
Qt on LinkedIn – Click here to join
Qt Video Hub 視頻中心 - http://u.youku.com/QtChina