介紹
用過Linux的人想必都知道Qt(不是QuickTime,呵呵)這個名稱,KDE就是用Qt寫的,我也是接觸Linux后才認識它的。
Qt原先是奇趣科技TM(Trolltech)的產品,由Haavard Nord(Trolltech的CEO)和Eirik Chambe-Eng(Trolltech的董事長)於1991年開始它的歷史,三年后他們創建了QuasarTechnologies公司,后改名為Trolltech,其發展與KDE的發展緊密關聯,可以說早期時每個KDE版本的發布都是Qt的一個里程碑事 件。之所以叫Qt,據說是因為字母“Q”在Haavard的Emacs所用的字體中很PP -_-!,而字母“t”是toolkit的意思。
Haavard和Eirik要開發Qt的起因是當時他們正在做一個項目(1991),必需在Unix、Macintosh和Windows環境下運 行。那個夏季的一天,Haavard和Eirik出去散步,當他們坐在一個公園長凳上時,Haavard說,“我們需要一個面向對象的顯示系統。”。這次 討論的結果為他們即將創建的跨平台GUI框架埋下了伏筆。
1991年,在設計上與Eirik合作,Haavard開始寫了一些類,它們后來成為Qt。在這年的接下來時間里,Eirik提出了 “signals and slots”的想法,這也是Qt的一個重要特征。在這年末,在Haavard的提議下,兩人一起下網開發“世界上最好的C++ GUI 框架”。
1994對這兩個年輕的程序員來說是不幸的,沒有一個客戶,手頭還是一個未完成的項目,沒有錢。幸運的是,他們的妻子都有工作,可以支持他們(感動 啊!!)。之后感謝與Haavard的一個大學時候的教授的聯系,一家公司給了他們用Qt開發運行在Unix和Windows上的軟件的機會。終於在 1995年5月20號,Qt 0.90發布了,這是Qt的第一個公開發行版。
之后還有很多故事,如Qct KDE組織的成立,KDE和Gnome的PK,Qt協議的變更,及Qt的幾個重要發行版,Nokia收購Qt,Qt支持LGPL協議等,就不介紹了。已經 有點跑題了,介紹就到這...
為什么用Qt
如果就寫跨平台的程序,Qt是一個很好的選擇,當然還有很好其它的GUI庫,如wxWidgets、gtk等。我選擇Qt主要是因為程序簡單,可拓 展性強,代碼思路清晰,文檔強悍!一般寫GUI,如果用到新的class都是再查文檔、看例程的,而這點用起來比MFC方便、靈活。用MFC寫程序不舒服 的地方時,很好時候代碼是用向導生成的,MSDN中對於GUI的class的例程不夠多。例程充足,這樣代碼完全可以自己寫,這樣條理就清楚了。
安裝與編譯
1. Commercial Edition
如果你用的是商業版本,那只要選擇好對應開發平台的就可以了,如vs2005sp1的,安裝下就可以了,連帶Visual Studio Addon,連編譯都省了。
2. Open-Source Edition
官方有提供MinGW下的安裝版本,可以選擇連帶的Qt Creator。這個IDE比較贊的,支持一些簡單的自動代碼補全,可以方便的查看Doc。還提供了git、svn等版本控制工具的集成支持,當然還有 Qt Designer、Qt Linguist的集成。
如果用在VS2005/2008中使用,就只是自己動手編譯了。編譯過程很簡單,下面假設IDE是VS2005,操作如下:
簡單編譯
a. 下載Qt原代碼包,如qt_4.5.1_opensource.zip,解壓到一個剩余空間大於3.5G的分區。
b. 設置系統環境變量:
QTDIR —— 剛剛解壓的Qt根目錄,
添加%QTDIR%\bin到Path,
QMAKESPEC ——win32-msvc2005
c. 打開VS的Command Prompt,輸入:
> configure
> nmake
編譯大約要2-4小時,編譯結果占3.5G左右。
自定義編譯
從上面的c步驟開始:
c. 打開VS的Command Prompt,輸入:
> configure --help
查看configure的可以使用的選項
我自己可能會用的:
-release 編譯release版本
-debug 編譯debug版本
-debug-and-release 兩個版本都編譯
-shared 編譯dll版本
-static 編譯靜態鏈接庫版本
-fast configure時只生成目錄級的Makefile
-no-qt3support 不支持Qt3
-qt-libjpeg 用Qt的jpeg解碼,用system-jpeg時,軟件發布到其它電腦上時jpg解碼出問題了
-vcproj 生成vs2005的vcproj工程文件,方便以后,一般不用,占地方
-phonon 視頻播放支持,需要DirectShow(DShow)
-direct3d direct3d支持,需要D3D SDK
注意:
用-phonon和-direct3d選項時,需要在之前設置環境變量,參與Qt的Readme。
DShow安裝比較麻煩,因為MS已經停止DShow的支持了,取而代之的是Media Foundation,在Vista和Win7中開始應用。DShow的最后版本環境是D3D2005 SDK和Direct Show包,好像還要Windows SDK 2003雲雲,配置過,記不清楚了。
d. 修改Qt如果不想編譯的部分
如不想編譯examples目錄下的文件,打開$(QTDIR)\examples\Makefile,修改為(添加skip-all和 skip-qmake兩行)
all:
skip-all:
D:\Qt\4.5.2-vs2008sp1\bin\qmakeD:/Qt/4.5.2-vs2008sp1/examples\examples.pro -o Makefile -spec win32-msvc2008
nmake -f Makefile
first: all
qmake:
skip-qmake:
D:\Qt\4.5.2-vs2008sp1\bin\qmakeD:/Qt/4.5.2-vs2008sp1/examples\examples.pro -o Makefile -spec win32-msvc2008
這樣編譯都這里時就直接跳過了,注意設置時要慎重,一些目錄下的代碼可能是編譯基本庫文件所需要的,特別是src目錄下的。如果你不想生成 qdemo.exe可以相仿地修改$(QTDIR)\demos\Makefile文件。
e. 編譯后的清理
如果你打算以后動不再修改編譯選項的話,又對Qt臨時文件占地方不舒服的話,可以清理一些臨時文件,最終可以減小到800M左右。
清理bin下除*.pdb和*.dll外的臨時文件,注意臨時文件指的是編譯生成的文件,如*.obj、*.ilk之類的文件
清理lib下除*.prl和*.lib外的臨時文件,*.prl不知道有什么用,反正小,就留着吧。
清理src下除vc[n].pdb外的臨時文件,如vs2005是vc80.pdb而vs2008是vc90.pdb。
tools、plugin和qmake目錄類似
配置VS2005
1. Qt Visual StudioAdd-in
Qt官方下載:http://qt.nokia.com/downloads/visual-studio-add-in
主要提供VS2005/2008的集成,如調用Designer、Linguist和一些幫助,還有修改Debug信息顯示方式,使Debug時數 據顯示更直觀。
2. 好像沒有了。。。
使用Qt寫程序
1. 唯美主義 - 不使用Designer
我個人常用的方法,這樣怎么開始Qt工程呢?
新建個目錄,如hi_qt,再新建個文件main.cpp,生成工程文件hi_qt.pro
qmake -project
生成VS工程文件hi_qt.vcproj:
qmake -tp vc
打開hi_qt.vcproj,菜單Qt->Convert project to Qt Add-in project,這樣就可以用Qt VS Add-in的功能新建Qt class了。
2. 一般方法
就是直接用Qt VS Add-in 的導向了,不爽的是一定要生成ui文件和qrc文件,當然你也可以事后刪除它們,這個就不多說了。
3. 讓Designer做大部分工作
主要是結合Qt VS Add-in和Designer完成大部分界面工作,如在界面中插入自己定義的Widget,寫Style Sheet等。這個說起來比較復雜,不多說了,一般用得不多,以后有時間再慢慢整理。
參考
C++ GUI Programming withQt 4, 2006, A Brief History of Qt
Qt Assistant 4.5.2
Qt Home
初涉 Windows Mobile下的QT程序移植和部署
http://www.cnblogs.com/bingcaihuang/archive/2010/12/07/1898661.html