標籤:
(安裝篇)
前奏:
提到C++的GUI Framework估計大多數人都會想到MFC、VCL,因為在十年前的COM時代,這兩個大傢伙幾乎壟斷了整個C++ windows平台上應用程式的開發市場, 但是最近幾年,隨著.NET framework的推出。使得MFC這樣原本就非常醜陋,麻煩的framework開始風光不再了,我也學過幾天的MFC,那種宏作為訊息滿天飛的編程風格讓我很快就放棄了,幾次和朋友的交流中,我們都認為C++其實不太適合做GUI程式,但是我必須面對一個問題:當我需要用C++寫個GUI程式的時候,我該用什嗎?我一直非常猶豫,很顯然,我不太願意用MFC,我也不太願意為了VCL再去學一個IDE的用法,而且我不得不用C++寫GUI的時候往往是在非windows平台上,顯然上面兩個framework就更不符合這個要求了。經過了一番調查,我最終選擇了Qt這個庫,於是也打算在這個blog上開一個學習手記系列。
下載:
好了,現在先讓我們搭建工作環境,講述Linux上的Qt環境設定的文章網上很多,我這裡不想再累述了,有興趣的人可以google之。我下面談在windows下的安裝和設定:首先,我們都知道,Qt這樣的開源產品和GCC編譯器的密切關係,所以首先我們必須有MinGW環境,那麼第一步,就必須先安裝MinGW,我這裡推薦一個IDE,dev-cpp,他是基於MinGW的一款C++ IDE,內建了MinGW,整合了gcc、g++、gdb等工具,非常有用。如下:
http://www.bloodshed.net/devcpp.htm
接著,我們需要下載Qt了,熟悉開源產品的朋友都知道,這種產品通常有兩種安裝方式:第一,源碼安裝,這個下載後,在命令列(shell)進行本地編譯即可,這個在Linux下安裝軟體是非常常見的;第二,是二進位安裝,通常有內建的GUI介面的圖形安裝想到,在windows下通常是這種安裝方式,其實那種安裝方式和作業系統沒什麼必然的聯絡,只是一種習慣而已,既然我們是在windows下,那麼就入鄉還俗,用第二種方式,我們需要下載Qt的Runtime for MinGW包,地址如下:
http://www.trolltech.com/
安裝:
下載之後,你會得到一個qt-win-opensource-4.2.2-mingw.exe檔案,雙擊後啟動安裝程式,和通常安裝windows程式一樣基本上只要一路next即可,只有一個地方要特別注意,就是他會問你MinGW的路徑,你如果安裝的就是MinGW,那麼就寫X:/MinGW(X是你安裝MinGW所在的目錄),如果你安裝的是dev-c++就寫你安裝他所在的目錄,如所示:
當然你也可以選擇這個時候線上安裝MinGW,可是這樣就取決於網路狀況了(這裡是直接連接國外的伺服器的,一般會很慢,經常斷線),這裡不鼓勵使用。最後,等嚮導完成後,你會發現你的開始菜單裡多出一項Qt by Trolltech v4.2.2 (OpenSource)功能表項目,到這裡還沒最終完事,因為Qt沒還沒建立debug庫,會導致在安裝目錄之外你不能運行Qt程式,因此展開該功能表項目,選擇Qt 4.2.2 (Build Debug Libraries),就會自動編譯debug庫,編譯時間很長,需要耐心等待,不熟悉源碼安裝的方式朋友們也可以體驗下源碼安裝的感覺(一條條命令往上飛,彷佛穿越了時空,-_-b)……
設定:
雖然,qt內建了命令列環境(Qt 4.2.2 Command Prompt),但是我們可能還是希望把環境變數全域化,因此我們可以右擊"我的電腦->屬性->進階->環境變數->系統變數的path"值後面加上下面三個路徑:
X:/Dev-Cpp/bin
X:/Dev-Cpp/mingw32/bin
X:/Qt/4.2.2/bin
目錄之間用";"分割,至此環境搭建完成。
檢驗安裝:
Qt內建了很多DOME。我們可以在X:/Qt/4.2.2/examples/下找到,例如我們可以用命令列環境進入到X:/Qt/4.2.2/examples/tutorial/t1目錄下,然後運行qmake命令編譯該程式DOME,如果安裝沒問題,會在該目錄下的relese目錄下找到Qt版的Hello World程式,如所示:
(入門篇)
按 照習慣,學習一個庫,一般從寫一個Hello World程式開始,在上篇中我們已經在庫的安裝目錄裡看到了這樣的例子,但是那個例子只有一個button,過於簡單了,甚至不能算是一個完整的表單程 序,為了比較深切的體會Qt編程的方式和思想,我們有必要自己寫一個相對比較複雜的Hello程式,我們的程式裡應該有一個面板裡面放置兩個控制項(一個無 事件控制項,和一個有事件控制項)來組成我們的程式,對於一個事件驅動的程式來說,這樣體驗才算是比較完整的,ok,首先,我們可以在上一個程式的基礎上進行 擴充,qt的類名字都很直觀,使得我們不需要藉助手冊,就可以猜到一些控制項的類名(真的不知道可以開啟Assistant查詢), 於是一個程式轉眼便敲入了,
編碼:
代碼如下:
#include <QApplication.h>
#include <QLabel.h>
#include <QWidget>
#include <QFont>
#include <QPushButton.h>
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QWidget winform; //作為一個主表單
QLabel label("<h1 style=‘color:blue‘>Hello, QT</h1>",
&winform); // Label 顯示hello資訊
QPushButton button("OK", &winform); // 退出表單按鈕
winform.resize(200,150); //設定大小
label.resize(200,100);
button.setGeometry(10, 100, 150, 40);
button.setFont(QFont("宋體",10, QFont::Bold)); //設定字型
label.setAlignment(Qt::AlignCenter);
// 設定事件關聯
QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit()));
winform.show();
return app.exec();
}
這裡大概只有幾點需要說明:
1。這裡的標頭檔和所用的類幾乎是一一對應的,因此很容易理解。
2。任何一個Qt程式都得從一個叫QApplication的類對象開始,他引入來自入口函數main的參數,返回成員函數exec()的運行結果。
3。可以用於面板的控制項有很多,就我們這樣的需求,一個QWidget足夠了。
4。QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit()));這句代碼確定了button控制項需要響應的單擊(click)事件和事件的處理函數(quit())的關聯。
編譯:
OK, 編碼完成,儲存為一個cpp檔案(比如Qhello.cpp)到一個臨時目錄下(比如E:/tmp/),然後開啟我們的命令列環境,進入這個臨時目錄,首 先,要建立一個Qt工程檔案,輸入命令qmake -project 斷行符號後我們得到一個名叫qt.pro的工程檔案,接著我們要建立makefile檔案(這個檔案會設定好每一個編譯選項,以方便我們後來的編譯),繼續輸 入命令qmake,這樣我們就在該目錄下看到了三個makefile檔案:
Makefile.Debug:編譯Debug版(即帶Debug資訊的版本,一般用於測試和調試)的編譯選項。
Makefile.Release:編譯Release版(即不帶Debug資訊的版本,一般用於產品的發布)的編譯選項。
Makefile :上面兩個檔案的總彙總器,他用於直接響應make命令。
最 後在命令列裡輸入make命令,編譯該工程,該工程預設產生的是Debug版程式,你可以在debug子目錄下找到,如果需要更改源碼,改完後,重新 make就可以了,如果沒有加入新檔案,無需更改makefile和工程檔案。如果確定發行就緒,可以輸入make release命令來產生Release版本(在Release子目錄下)。
http://blog.csdn.net/henreash/article/details/3541311
QT 4.2.2的安裝(安裝完還要再編譯,注意設定Windows Path)