Qt與VS2005/2008的完美配合(自己編譯Qt4.5.1的詳細步驟)


介紹

用過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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM