2007年9月29日

Qt 介紹與安裝

Qt 是一個跨平台 ( 包括 Windows / X11 / Mac ) 的圖形介面開發庫 ( GUI software toolkit ),由挪威 Trolltech 公司開發。以 C++ 寫成的 Qt 庫,已有許多種語言綁定。目前最新版本為 4.3.1。

其歷史可以追溯至 1991,創辦人之一開始寫出雛型,並在 1993 完成圖形核心,1994 年成立公司 Quasar Technologies,1995 第一次公開釋出 Quasar Toolkit 0.90,開始有 commercial 與 free software 兩種 license。1996 釋出 Qt 1.0 ( 官方讀音 "cute" ),以其為基礎的最大軟體項目 K Desktop Environment 開源專案成立。

眾人皆知 Gnome 與 KDE 間的較量便由此開始;講求 GPL 的 GNU 全力支持以 GTK+ 開發的 Gnome,並以此攻擊 Qt 的 license。因此,1999 年釋出的 Qt 2.0 便多了一個 QPL,作為開源用途的靠背,從而 ( 稍微 ) 減少爭議。

2001 年釋出的 Qt 3.0 算是一大里程碑,新增了對 Unicode 的支援等。至今許多 KDE 3 上的軟體都是以 Qt 3 開發,並準備過渡到 2005 年釋出的 Qt 4.0。今年年底將要釋出的 KDE 4 就是以 Qt 4 為基底,是相當令人期待的大躍進 (>ω<)♪♪

一路走來,Trolltech 最後終於合流,讓 Qt for Windows available under the GPL with Qt 4 了。我只能說,一堆 open source licenses 真是讓我眼花繚亂啊... Orz

「Qt」這字體看起來挺美觀的 ( 雖然 logo 醜了點 ),簡潔明瞭,我最初就是被這名稱吸引 ( 爛理由 =.= )。而且用它來做 GUI 還頗有趣,是我現在想學習的圖形庫。

以下說明如何在 Ubuntu 下安裝 Qt 4.3.1:

雖然 Synaptic 裡面有 libqt4-dev,但是我裝了卻不知道該怎麼用... ( 更新:懶得自己編譯的話可以直接裝 ),所以還是去搞 tarball 來慢慢裝吧!

首先,到 Trolltech 網站下載 Qt/X11 Open Source Edition。解壓後,其實裡面的 ./INSTALL 就有寫安裝步驟了。不過我為了充版面,當然係得一項一項摳過來才行 =3=

切換到 qt-x11-opensource-src-4.3.1 資料夾後:

$ ./configure -help

這樣會列出幾頁參數,可以調整一堆雜七雜八的安裝內容 ( 其實預設就差不多了 )。比較重要的是預設 -shared 會讓之後編譯 Qt 專案時產生較小 binary file,需要使用 shared library,沒有 library 的系統不能跑。

-static 則會包 runtime library 進去,不過檔案大小會增加很多。

-shared 和 -static 可以並存,但是需要個別 configure & make 在不同的資料夾 ( 用 -prefix 來設定安裝路徑 )。

確定後開始 configure。參數僅供參考:

$ ./configure -no-qt3support -optimized-qmake

然後會問你接不接受 license。你要填 no 嗎?

configure 有點久,不過跟下一步比起來不算啥:

$ make

打個盹吧!

睡醒之後如果有幸完成了,就再接續下一步:

$ sudo make install

真是神速無比啊!

預設是用 -shared 裝在 /usr/local/Trolltech/Qt-4.3.1,編譯完之後大約為 410MB。-static 則約 1.2GB ( 因為每個 example application / demonstration 都會包 runtime library 進去... )。

安裝完成了,就要調校 $PATH 變數啦!免得 compile 時啥 header 都找無。

$ echo "export PATH=\"/usr/local/Trolltech/Qt-4.3.1/bin:\$PATH\"" >> ~/.bashrc

收工 (>ω<)♪♪

然後就可以開始玩 Qt 啦~

要編譯 Qt 程式時,就是寫好 main.cpp 後切進資料夾三部曲:

$ qmake -project
$ qmake
$ make

就可以產生 binary file 了。檔案大小視程式規模而定,小玩具大概都在 50KB 以內。用了 -static 會增加約 7.7MB。

想學習的話,官方有提供 Tutorial 和很多範例程式,以及所有 API 的 Reference Documentation。想看書的話,去年 6 月出版的 C++ GUI Programming with Qt 4 算是最近期的書了,有著官方著作的權威性。內容為 Qt 4.1 ( 語法和 4.3 應該不會差很多啦 =3= )。

努力學習吧!

11 則留言:

  1. 您好
    我想請問QT安裝的問題
    我做到make的動作
    出現
    make: Warning: File `projects.pro' has modification time 1.2e+07 s in the future
    /usr/qt-4.3/bin/qmake -spec mkspecs/linux-g++ -unix -o Makefile projects.pro

    不斷的重覆
    導致make不成功
    請問這是什麼問題呢??

    回覆刪除
  2. 可能是系統時間太慢了... 可以往前調看看

    或是直接 以 Synaptics 安裝 Qt 開發環境

    回覆刪除
  3. 果然是時間的問題
    謝謝大大回答

    回覆刪除
  4. 您好,我按照您的步驟安裝完成,但是還是無法使用qt
    請問您是使用哪一種ide的環境寫程式,我使用code::block,在建立project時選擇qt的類別,但是環境變數好像無法找到qt

    回覆刪除
  5. 我沒有用 IDE 耶...... 都是以文字編輯器寫好 code 之後,直接從 console 打指令編譯的。另外,如果開出 QDevelop 之類的,選項指定 Qt 路徑也都成功。
    看看 $PATH 變數那邊的路徑,有沒有設定正確吧。
    設定無誤的話... 我也不知道該怎麼辦了 囧

    回覆刪除
  6. 請問,我若要用不同的gcc/或g++安裝,那請問在哪邊可以指定我要用的compiler呢?謝謝

    回覆刪除
  7. 如果你是指用 gcc 以外的 compiler 的話...... 不曉得 囧a
    Linux 下應該是 gcc 獨霸瞭...

    回覆刪除
  8. 喔!大大你誤會我的意思了,我的意思是說,假設原本系統是用gcc 3.4的,那我如果要用gcc 4.1的,那表示我要指定對的版本來compiler才可以,那要在哪邊設定呢?

    或者說,linux上預設都是用gcc,若我要用cross-compiler,device的cup是arm,所以可能要用arm-linux-gcc這種compiler,那假設我的arm-linux-gcc是在/opt/arm/下,那我在build Qt時,怎麼指定compiler到arm-linux-gcc呢?

    謝謝你了

    回覆刪除
  9. 看看官方的這篇
    ./configure 時的選項也翻一翻,應該有提供指定 compiler 的參數。

    回覆刪除
  10. 我在configure之後出現這段訊息
    You might need to modify the include and library search paths by editing
    QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/rina9977/source/qt-x11-opensource-src-4.5.2/mkspecs/linux-g++.

    就無法make了 請問這要怎麼處理

    回覆刪除
  11. QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 的问题安装这个包
    sudo apt-get install libxtst-dev

    回覆刪除