QT 桌面安裝與建立運行環境
QT 桌面安裝與建立運行環境是本文介紹的內容,在Trolltech公司的網站上可以下載該公司所提供的Qt/Embedded 的免費版本,在安裝產品光盤以后,本次實驗目錄下已有要下載的文件,在/arm2410s/gui/Qt/src 下。在做實驗前把本次實驗用到的三個文件拷貝到/root/2410sQt 目錄下。
- [root@BC root]#cd /root/
- [root@BC root]#mkdir 2410sQt
- [root@BC root]#cd /arm2410dev/gui/Qt/src
- [root@BC src]#cp -arf tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gz
- qt-x11-2.3.2.tar.gz /root/2410sQt
安裝編譯器arm-linux-gcc-3.4.1:
- [root@BC src]#cd /arm2410dev/gui/Qt/tools
- [root@BC tools]#tar xjvf arm-linux-gcc-3.4.1.tar.bz2 -C ./
- [root@BC tools]#vi /root/.bash_profile //打開文件
將該文件中的PATH 變量改為PATH=$PATH:$HOME/bin:/arm2410s/gui/Qt/tools
- /usr/local/arm/3.4.1/bin/,存盤后退出。
- [root@BC tools]# source /root/.bash_profile
如果安裝正確的話,在任意路徑下輸入ar 后按Tab 鍵即可列出編譯器文件。
Qt/Embedded 平臺的搭建需要以下幾步:
***步,解壓安裝包并設置環境變量
安裝Tmake
- cd ~/2410sQt
- tar –xzf tmake-1.13.tar.gz
- export TMAKEDIR=$PWD/tmake-1.13
安裝Qt 2.3.2
- cd ~/2410sQt
- tar –xzf qt-x11-2.3.2.tar.gz
- export QT2DIR=$PWD/qt-2.3.2
安裝Qt/Embedded
- cd ~/2410sQt
- tar –xzf qt-embedded-2.3.10-free.tar.gz
- export QTEDIR=$PWD/qt-2.3.10
環境變量的設置是非常重要的,它關系到能否正確的安裝及編譯這些安裝包,下面介紹一下這些環境變量:
- TMAKEDIR : 指向用于編譯Qt/Embedded 的Tmake 工具
- QT2DIR : 指向qt-2.3.2 的文件夾
- QTEDIR : 指向qt-2.3.10 的文件夾
第二步,編譯Qt/Embedded。
1、Build Qt2.3.2
- cd $QT2DIR
- export TMAKEPATH=$TMAKEDIR/lib/linux-g++
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- ./configure -no-xft //出現選項時都輸入yes
- make
- cp –arf bin/uic $QTEDIR/bin/
./configure 是對Qt 進行配置,它包括很多選項,例如可以通過添加“ -no-opengl”等,如果想要進一步了解可以通過鍵入 ./configure --help 來獲得更多的幫助信息。編譯完成后需要將生成的/bin/uic 復制到$QTEDIR 下新創建的目錄bin 中,因為在隨后編譯
Qt/Embedded 的時候會用到這個工具。
2、Build Qvfb
- export TMAKEPATH=$TMAKEDIR/lib/linux-g++
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- cd $QTEDIR/tools/qvfb
- /root/2410sQt/tmake-1.13/bin/tmake -o Makefile qvfb.pro
- make
- mv qvfb $QTEDIR/bin/
這一步build qvfb 并建立了從Qt/Embedded 2.3.10 到Qt 2.3.2 的靜態庫的鏈接。其中qvfb 工具用來生成Virtual framebuffer,這是一個非常有用的工具,它可以模擬在開發板上的顯示情況,如果在Virtual framebuffer 中運行沒有問題的話,可以直接通過交叉編譯在開發板上運行。
#p#
3、Build Qt/Embedded
- cd $QTEDIR
- export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
- export QTDIR=$QTEDIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- ./configure -no-xft -qvfb -depths 4,8,16,32
- yes
- 5
- make
在配置./configure 中-qvfb 用來支持Virtual framebuffer,-depths 4,8,16,32 支持4 位,8位,16 位,32 位的顯示深度,此外還可以添加如-syestem-jpeg 和-gif 來提供對jpeg 和gif的支持。配置系統同時還支持對特定平臺系統選項的添加,但一般來講,凡是支持framebuffer 的Linux 系統都可以使用“linux-generic-g++”平臺。詳細的配置信息可以通過運行./configure --help 命令來查看。
第三步,查看運行結果
如果上面各步都能夠成功的編譯通過,下面就可以通過運行。Qt/Embedded 自帶的demo 來查看運行結果。
在Virtual framebuffer 上運行:
- export QTDIR=$QTEDIR
- export PATH=$QTEDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH
- cd $QTEDIR/examples/launcher
- qvfb -width 640 -height 480 &
- sleep 10
- ./launcher -qws
運行結果如圖9-3:
圖9-3 Qt/Embedded Demo程序
將上面的步驟完成后,我們就已經建立好了在本機上開發Qt 應用程序的環境,下面我們通過編寫一個“Hello Embedded”的程序來了解Qt 程序設計。
- [root@BC qt-2.3.10]# cd /root/2410sQt/
- [root@BC 2410sQt]# mkdir exp
- [root@BC 2410sQt]# cd exp
- [root@BC exp]# vi hello.cpp
#p#
使用VI 編寫文件hello.cpp,程序代碼如下:
- //hello.cpp
- #include <qapplication.h>
- #include <qlabel.h>
- int main(int argc, char **argv)
- {
- QApplication app (argc, argv);
- QLabel *hello = new QLabel("Hello Qt/Embedded!", 0);
- app.setMainWidget(hello);
- hello->show();
- return app.exec();
- }
現在開始逐行講解一下每一句是什么意思,掌握了這些以后可以幫助我們更加了解Qt的程序設計。
第1 行和第2 行包含了兩個頭文件,這兩個頭文件中包含了QApplication 和 QLabel類的定義。
第5 行創建了一個QApplication 對象,用于管理整個程序的資源,它需要2 個參數,因為Qt 本身需要一些命令行的參數。
第6 行創建了一個用來顯示Hello Qt/Embedded!的部件。在Qt 中,部件是一個可視化用戶接口,按鈕、菜單、滾動條都是部件的實例。部件可以包含其它部件,例如,一個應
用程序窗口通常是一個包含QMenuBar、QToolBar、QStatusBar 和其它部件的一個部件。
在QLabel 函數中的參數0 表示,這是一個窗口而不是嵌入到其它窗口中的部件。
第7 行設置hello 部件為程序的主部件,當用戶關閉主部件后,應用程序將會被關閉。如果沒有主部件的話,即使用戶關閉了窗口程序也會在后臺繼續運行。
第8 行使hello 部件可視,一般來說部件被創建后都是被隱藏的,因此可以在顯示前根據需要來訂制部件,這樣的好處是可以避免部件創建所造成的閃爍。
第9 行把程序的控制權交還給Qt,這時候程序進入就緒模式,可是隨時被用戶行為激活,例如點擊鼠標、敲擊鍵盤等。
下面我們要讓我們的程序跑起來,首先要讓它能夠在Virtual framebuffer 中顯示出來,然后再通過交叉編譯在開發板上運行。
要在本機的Virtual framebuffer 中顯示結果,下面幾步是必須的:
1.生成工程文件(.pro)
每一個Qt 程序都對應著一個工程文件,因為tmake 工具要借此工程生成相應的Makefile 文件。生成工程文件需要使用progen 工具,它的位置在$TMAKEDIR/bin 下,使用progen 生成工程文件的方法如下:
- $TMAKEDIR/bin/progen –t app.t –o hello.pro
生成的這個hello.pro 工程文件是可以被修改的,可以編輯里面的頭文件、源文件等內容。
2.生成Makefile 文件
Qt 提供了生成Makefile 文件的工具tmake,這極大地方便了應用程序的開發,節省了大量的時間,而且還可根據不同平臺的需要生成適合于不同平臺的Makefile 文件。
在使用tmake 工具前,必須查看相應的環境變量是否正確,由于我們要編譯在本機上運行的Qt 程序,所以指定的編譯器應該為“linux-x86-g++”,在命令行中輸入下面的命令
來檢查環境變量是否正確:
- echo $TMAKEPATH
查看返回的結果的結尾字符是否是“……/qws/linux-x86-g++”,如果不是的話需要在命令行中重新設置TMAKEPATH
- export TMAKEPATH=/tmake 的安裝路徑(如$TMAKEDIR)/lib/qws/linux-x86-g++
此外還要使QTDIR 指向Qt/Embedded 的安裝路徑,如:
- export QTDIR=$QTEDIR 或者直接指定路徑
- export QTDIR=……/qt-2.3.10
完成了上面的環境變量的設置,并用echo 命令檢查無誤以后,就可以使用tmake 工具來生成我們需要的Makefile 文件,在命令行中輸入如下命令:
- $TMAKEDIR/bin/tmake –o Makefile hello.pro
完成上面的步驟以后就可以在當前的目錄中生成一個Makefile 文件,關于Makefile文件的功能和結構這里就不再做過多的介紹了,可以參考前面的章節來了解Makefile。
***在命令行中輸入 “make”命令就可以對整個程序進行編譯鏈接了,最終生成了一
個二進制的可執行文件hello。用Virtual framebuffer 顯示效果如下:
圖9-4 Hello Embedded
我們可以通過對QLabel *hello = new QLabel("Hello Qt/Embedded!", 0)這句進行修改,使我們的程序顯示起來更為美觀,修改如下:
- QLabel *hello=new QLabel("<h2><fontcolorfontcolor=blue>Hello" "<i>Qt/Embedded!</i> </font> </h2>", 0);
修改后顯示效果如圖所示:
圖9-5 修改后Hello Embedded
小結:關于QT 桌面安裝與建立運行環境的內容介紹完了,希望本文對你有所幫助!