歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

嵌入式工具Qt的安裝與使用

  Qt是Trolltech公司的一個產品。Trolltech是挪威的一家軟件公司,主要開發兩種產品:一種是跨平台應用程序界面框架;另外一種就是提供給做嵌入式Linux開發的應用程序平台,能夠應用到PDA和各種移動設備上。Qt和Qtopia分別是其中具有代表性的兩個。     Qt是一個多平台的C++圖形用戶界面應用程序框架,它能給用戶提供精美的圖形用戶界面所需要的所有元素,而且它是基於一種面向對象的思想,所以用戶對其對象的擴展是相當容易的,並且它還支持真正的組件編程。     Qt是Linux桌面環境KDE的基礎。筆者認為,可以說Qt與Windows下的Mfc的實質是一樣的,所以Qt最大的優點在於其跨平台性,可以支持現有的多種操作系統平台,主要有:     ◆ MS/Windows 95、Windows 98、WindowsNT 4.0、windows 2000、Windows XP;     ◆ Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、IBM AIX、SGI IRIX和很多其它X11平台;     ◆ Macintoshi Mac OSX;     ◆ Embedded—帶FramBuffer的Linux平台。     下面簡單介紹一下Qt/Embedded和Qtopia在Linux上的安裝和使用,還有在開發過程中可能碰到的一些問題。     Qt 和Qtopia的安裝    如果需要安裝一個帶FramBuffer的Qtopia平台,需要有以下軟件(所列舉軟件以筆者使用的為例):     ◆ Qtopia 1.6.0;     ◆ Tmake 1.11;     ◆ Qt/Embedded 2.3.4(Qtopia 1.6.0是基於該開發平台上開發的);     ◆ Qt/Embedded 2.3.2 for X11;     ◆ Qt 3.1.2 for X11。     在Trolltech公司的網站上可以下載該公司所提供的Qt/Embedded的免費版本。     Qtopia平台安裝分為以下幾個步驟:     1. 解包Qtopia   在Linux命令模式下運行以下命令:     tar xfz qtopia-source-1.6.0 (解包)   cd qtopia-source-1.6.0   export QPEDIR=$PWD  (設置環境變量)   cd..     2. 安裝Tmake   在Linux命令模式下運行以下命令:    tar xfz tmake-1.11.tar.gz  export TMAKEDIR=$PWD/tmake-1.11  export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++  export PATH=$TMAKEDIR/bin:$PATH     3. 安裝Qt/Embedded2.3.4   在Linux命令模式下運行以下命令:    tar xfz qt-embedded-2.3.4-commercial.tar.gz  cd qt-2.3.4  export QTDIR=$PWD  export QTEDIR=$QTDIR  export PATH=$QTDIR/bin:$PATH  export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/  . /configure -qconfig qpe -qvfb -depths 4,8,16,32  make sub-src  cd ..     也可以在configure的參數中添加-system-jpeg和gif,使Qtopia平台能支持jpeg、gif格式的圖形。     4. 安裝Qt/X11 2.3.2   在Linux命令模式下運行以下命令:    tar xfz qt-x11-2.3.2-commercial.tar.gz  cd qt-2.3.2  export QTDIR=$PWD  export PATH=$QTDIR/bin:$PATH  export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  . /configure -no-opengl  make  make -C tools/qvfb  mv tools/qvfb/qvfb bin  cp bin/uic $QTEDIR/bin  cd ..    根據開發者本身的開發環境,也可以在configure的參數中添加別的參數,比如-no-opengl或-no-xfs,可以鍵入./configure -help來獲得一些幫助信息。     5. 安裝Qt/X11 3.1.2   在Linux命令模式下運行以下命令:     tar xfz qt-x11-commercial-3.1.x.tar.gz  cd qt-x11-commercial-3.1.x  export QTDIR=$PWD  export QT3DIR=$QTDIR  export PATH=$QTDIR/bin:$PATH  export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  ./configure -thread  make  cd ..     6. 安裝Qtopia   在Linux命令模式下運行以下命令:     cd qtopia-source-1.6.x  export QTDIR=$QTEDIR  export QPEDIR=$PWD  export PATH=$QPEDIR/bin:$PATH  cd src  ./configure  make   cd ../..     7. 安裝Qtopia桌面   cd qtopia-source-1.6.x/src  export QTDIR=$QT3DIR  ./configure -qtopiadesktop  make  mv qtopiadesktop/bin/qtopiadesktop ../bin  cd ..     Qt和Qt Designer的使用     根據上面的步驟安裝完成了Qt/Embedded和Qtopia之後,就可以運行這些程序了。     運行Qt的虛擬仿真窗口:在Linux的圖形模式下運行命令qvfb&;Qtopia只是一個用Qt/Embedded開發的程序,運行Qtopia,在圖形模式下運行命令:     export QTDIR=$QTEDIR,  qpe &;     這樣Qtopia的程序就運行在QVFB上,即Qt的虛擬仿真窗口。     Qt/Embedded是針對嵌入式Linux而開發的一種開發工具,Qt封裝了一些常用的類,而且這些類的名字都以Q字開頭命名,如QString、QDialog等。這裡主要介紹一下如何利用Qt Designer來設計組件,並生成相應的代碼。     在Qt中,把組件分為復合體、原始體和配件。而在Qt中,組件是由一些抽象類、復雜的組件類、管理組件幾何特性的類等組成。     Qt中有三個主要的基類:QObject、Qapplication和QWidget。     在Qt中編程,利用Signal和Slot進行對象之間的通信是Qt的主要特征。它與Windows中的消息機制非常類似,但是Signal和Slot機制真正實現了一種消息的封裝。當對象的狀態改變時,發出Signal,通知所有的Slot接受Signal,盡管它不知道哪些函數是Slot,Slot一開始也不知道哪些Signal可以接收。Signal和Slot之間不是一一對應的關系,一個Signal可以發給多個Slot, Slot也可以接收多個Signal。Slot除了可以接收Signal以外,與其它的成員函數沒有區別。這種機制比使用回調函數要靈活,但是會減慢程序的運行速度。不過在現在高速CPU的面前,這種損失是無足輕重的,而且它還能保證程序的簡明性和靈活性,非常便利。     在Qt的組件中,不僅定義了常用的成員變量和成員函數,還定義了所有與該組件相關的Signal和Slot。     要將組件組合起來,最簡單的方法就是使用Qt Designer。首先要啟動Qt Designer,在Linux命令模式下,鍵入以下命令(假設Qt安裝在/usr/local下):     cd qt-2.3.2/bin   ./designer     這樣就可以啟動一個與Windows下的Delphi相類似的如圖1的界面。     然後新建一個QFrame,將自己需要的組件直接拖拉到這個Frame中,相信很多人都有過這樣的經歷,此處就不再詳細描述了。完成之後存盤時,會將這個新的組件保存為一個擴展名為.ui的文件。假設所存的文件名為test.ui,用vi test.ui來查看這個文件,發現這是一個用XML語言寫的一個文本。下面用這個test.ui生成相應的test.h和test.cpp。同樣還是在這個目錄下,可以看到一個uic的工具,這個是Qt專門用來將ui文件生成.h和.cpp文件的,在終端模式下鍵入以下命令:     ./uic -o test.h test.ui  ./uic -o test.h -i test.cpp test.ui     此時就能看到生成了相應test.h和test.cpp,這是一個類。當然這只是一些表面的東西,還需要在這些代碼中添加相應的Signal和Slot,完成所需要的操作。值得注意的是,相應版本生成的ui最好用相應版本的uic來生成代碼。如果用Qt 3.1.2的Designer生成的ui,用Qt 2.3.2的uic來生成代碼,生成的代碼都會是一些空函數。     在一般的開發過程中,首先通過這個ui生成的一個類,在Qt中通常叫做Base,如上面的例子,叫做testBase;然後再新建一個類,來繼承這個Base。通常叫做實現類Impl,如testImpl。在這個實現類裡面定義所需要的成員函數、Signal和Slot,因為ui可能是經常需要改動的。如果這樣做,每次只需要在Designer中修改ui,而不用去理會這些成員函數、Signal和Slot了。     編譯一個Qt程序必然需要Makefile,在Qt中提供了一個專門生成Makefile的工具,就是tmake。用tmake需要根據編寫的程序寫一個.pro文件。.pro文件非常簡單,有固定的格式,下面是一個例子:     TEMPLATE = app  CONFIG = qtopia warn_on release  MOC_DIR =tmp  OBJECTS_DIR =tmp  HEADERS =fcrs.h\          strUCts.h          globalfunc.h          globalvars.h \          testimpl.h  SOURCES = main.cpp          globalfunc.cpp         globalvars.cpp \          testimpl.cpp  INTERFACES = test.ui TARGET = fcrs     生成這個.pro文件之後,在終端中鍵入下面的命令:     tmake -o Makefile test.pro     就自動生成了一個Makefile,使用這個Makefile編譯所編寫的程序就可以了。




Copyright © Linux教程網 All Rights Reserved