|
Embedded QT & QT PalmTop
|
|
|
QT是什麽相信用過KDE的人一定不會陌生。因爲QT使用簡單(C++的一種延伸)同時又具有跨平臺的特性,加上Embeded QT本身不用到X11的東西就可以做出Windows來,所以可以在很低的硬體上運行。現在很多人已經把QT用於Embedded 系統上。 這�塈畯怢茈�PlamTop這個程式來作示範。首先先讓我們看看PlamTop都有些什麽: PlamTop本身已經有很多非常完整的程式了。位址本、電腦、世界表、日程安排、MPEG、圖像、聲音、表格、Browser、文件遊覽、文字編輯、Todo等等。當然也少不了一大堆的遊戲。因爲QT的關係,只要遵循I18N,就可以很輕鬆的做出多語言系統。也就是說PlamTop本身就已經提供了一個很好的中文環境了。對於我們這些需要用到中文的人來說,只要再加上個中文輸入程式,就太完美啦。正在有點頭痛給自己寫中文輸入法的時候,又被我發現原來早就有人已經幫我們做好了。只要下載QPECIN 就好了。那是SourceFab的一個Project。專門就是在開發PlamTop下的中文輸入法問題。 看了這麽多,不知道大家是否動心呢?好吧,現在就來教教大家如何來做你自己的QT embedded system。當然,你也不一定非給要有iPAQ才可以。QT本身是可以跨平臺的,所以你也可以把plamtop安裝在你的x86電腦中。我這�堛煽�試,486以上都沒有問題。 先來給大家講講embedded QT: 首先,因爲embedded QT不是建立在X11的基礎上的,所以運行時對RAM的要求很低。簡單的設置,能在800 Kb中運行(Intel x86)。Embedded QT本身 寫出來的程式也非常的小。通常都在幾十Kb左右。相信QT的美觀性,大家在玩KDE的時候就已經都見過了吧, Embedded QT當然也很自然的繼承了QT的外觀。當然,最重要的就是Embedded QT是可以跨平臺的。這也就是說,能跑Linux的地方,就可以跑Embedded QT了。ARM, I386, Motorola
68000, MIPS, PowerPC等等的硬體上,都可以運行Embedded QT. PlamTop呢,就是用QT-embedded寫的一個給embedded system用的系統。當然,目前主要是用在iPAQ上。而實際上,只要能跑linux的PDA,有cross compiler基本上都可以跑的啦。我在我的電腦上也直接能跑(i386)的系統。 PlamTop最大的特色就是圖形非常的漂亮,同時還有個我很喜歡的程式,一個Shell。在就是遊戲一大堆。PDA主要的東西這�堻ㄕ陸捸C而用QT/X11寫的程式,稍微做作修改,就可以在這�媔]了。 我們可以在Trolltech下載免費的QT Embedded版本. 目前的最新穩定版本是 3.0.0.因爲這�塈畯怑n用PlamTop這個程式來做測試,而PlamTop的最新程式1.4.0似乎跟QT-3.0.0之間有點問題。(至少我的電腦�埵釣潃�function有問題)所以我下載的是一個比較舊的版本qt-embedded-2.3.1。下載回來以後。 再到PlamTop 中下載最新的qpe版本。目前的最新版穩定版是qpe-1.4.0.下載回來後,首先建立一個目錄來做我們的Embedded QT Project的家目錄:
$mkdir
EMBEDDED-QT
然後我剛剛下載的那兩個source全部copy到這個新的目錄下,然後進入目錄,把兩個source解壓縮。
$cd
EMBEDDED-QT $cp
../*.tar.gz . $for i in *.tar.gz; do tar vxfz $I; done
完成上面的步驟以後,你就可以看到現在你這�堣w經多了兩個目錄出來,一個是qt-embedded-free-2.3.1另一個是qpe-1.4.0我們需要先把embedded-qt 編輯起來以後,才能去編輯qpe.首先切換到embedded-qt的目錄下:
$cd qt-embedded-free-2.3.1
我們需要給qt-embedded一個運行環境才可以編輯。 在bash下用pwd來確定當前的目錄:
$pwd /EMBEDDED-QT/qt-embedded-free-2.3.1
然後設定QTDIR的遠景
$export
QTDIR=/EMBEDDED-QT/qt-embedded-free-2.3.1 $export LD_LIBRARY_PATH=/EMBEDDED-QT/qt-
在embedded qt 2.3.1下編輯qpe1.4我們還需要一些patch的動作。
$patch –p0 –s <../qpe-1.4.0/qt/qte-231 –for-qpe140.patch
這個patch是qpe本身提供的。(但是在我的機器中發現patch 中/src/Makefile.in這個文件的patch有點問題,需要自己動手改改) 然後我們需要吧qpe給qte寫好的qconfig-qpe.h給他copy到qte中去。
$cp ../qpe-1.4.0/qt/qconfig-qpe.h src/tools
這時候,我們可以運行./configure script了
$./configure –qconfig qpe
這�塈i訴configure用我們剛剛copy過去的那個qconfig-qpe.h這個文件運行設定。設定結束以後,直接打
$make
就可以了。如果沒有什麽問題,等make完成,你就已經把embedded
qt
安裝成功了。現在來看qpe吧。Qpe非常的簡單,直接打:
$./configure $make
就可以了,幸運的話,不久你就make成功了。當然如果出了問題,問題大多數都是你編輯qt-embedded的時候的問題。重新編輯qt-embedded然後再重新編輯qpe試試看。要記得重新編輯的時候要make clean, ./configure,
make噢。(我的qte就搞了很久,改的時候,可以直接去修改$QTDIR/src/tools/qconfig.h,那樣 會簡單些。至少我這麽認爲J) 如果你一切都搞定,就先去把下面的東西strip一下吧。(能小很多噢)
strip
–R .note –R .comment bin/* strip
–R .note –R .comment $QTDIR/lib/libqte.so* $QTDIR/lib/libqpe.so* strip
–R .note –R .comment plugins/*/*
就這麽簡單,一切都搞定ok啦。 下面來說說如何在QT-Plamop下面寫程式: 其實在QT
PlamTop下面些東西,跟你平時寫QT的程式是一樣的。所有的classes和function都是一樣的。 但是有幾點你一定要注意: (畢竟embedded system在硬體上跟我們的電腦是不一樣的) 1. 顯示問題:給PlamTop寫程式,顯示的widget不能超過240x240. 2. 通常PDA沒有電腦那麽健全的鍵盤。所以當你寫程式的時候,盡力少用鍵盤控制,而多用mouse. 3.
PDA中的mouse(stylus)跟我們平時電腦中用的是不一樣的。也就是說,stylus中,如果沒有mouse button pressed的情況下,是沒有mouseMoveEvent()的。 這�塈畯怚峟茬斨眾瑼�QT程式來做個示範。這個程式什麽也做,只是顯示一個window然後有一個quit_button。其實寫的時候,跟你在xwindow中是沒有區別的。唯一的區別就是widget千萬不能超過240噢。不然就真的慘了。
/* myapp.cpp */ #include <qapplication.h> #include <qlabel.h> #include <qpushbutton.h> int main(int argc, char* argv[]) {
QApplication embedded(argc, argv);
QWidget* embedded_window=new QWidget();
embedded_window->setGeometry(0,0,240,120);
QLabel* E_label=new QLabel("Embedded QT Testing
Program", embedded_window);
E_label->setGeometry(35,10,170,30);
QPushButton* E_quit_button=new QPushButton("Quit",
embedded_window);
E_quit_button->setGeometry(90,60,60,30);
QObject::connect(E_quit_button, SIGNAL(clicked()), &embedded,
SLOT(quit()));
embedded.setMainWidget(embedded_window);
embedded_window->show();
return embedded.exec(); }
程式本身很簡單。Embedded_window只做到240x120,放在0,0的位置。計算一下,240 –
170 =70然後除以2=35,就把embedded_window的位置定下來了。同理算得E_quit_button的位置。 然後signal給clicked,SLOT就直接quit出main application。也就是說直接關掉就好。現在我們把這個小程式加到PlamTop中去吧。 首先在你的$QPEDIR下面做一個新的目錄,目錄名稱隨便。
$cd
$QTDIR $mkdir
myapp $cd myapp
然後就可以把上面的那個myapp.cpp寫在這個目錄下。同時你需要寫一個tmake的project 文件:myapp.pro。這個文件就照其他的目錄內的pro來寫就好。因爲我們的程式很簡單。全部都寫在一個文件下。所以我們的.pro文件看起來應該是這樣的:
EMPLATE
= app CONFIG
= qt warn_on release DESTDIR
= ../bin HEADERS
= SOURCES
= myapp.cpp INCLUDEPATH
+= ../library DEPENDPATH
+= ../library LIBS
+= -lqpe INTERFACES
= TARGET = myapp
然後把我們寫的東西加到$QPEDIR下的Makefile中去: 就加在 APPS=$(LOCALAPPS)那一行中。(放到最後就好) 最後我們在從新跑一遍configure 的script. 這樣configure就會自動幫我們把Makefile.in和Makefile做好。現在就可以編輯你的程式啦:
$cd
$QPEDIR/myapp $make
最後要做的就是在$QPEDIR下的 apps/applications中寫入我們的desktop 文件。
$cd
$QPEDIR/apps/applications $vi myapp.desktop
desktop文件的寫法很簡單,跟KDE�堶悸�desktop是一樣的,所以我們只要寫入:
[Desktop
Entry] Comment=My
Embedded Tester Name=MyApp Icon=myapp_embedded Type=Application Exec=myapp
就可以了。當然,我們要找個icon給myapp來用。隨便畫個png的icon圖形(xwindow中有個不錯的icon editor)然後命名爲myapp_embedded 就好。(記得要用png的格式來存) 把這個icon放到$QPEDIR/pics/myapp下面就好這�堛煽N是myapp_embedded.png注意這�堛漲W字必須跟前面我們myapp.desktop中的icon�堶悸漱@樣。不然就找不到Icon了。 到這�堙A你就全部都完成了J。 當然,這�堛熊{式只是個爲了測驗用的小程式而已。其實很多的QT程式都是可以直接給Embedded
QT來用的。甚至一些KDE的程式,稍微修改修改也都可以拿來用。大家可以到QT的網站Trolltech去看看。 |
|
Author: Goldencat <Ruili@worldnet.att.net> Copyright: This article is Copyright (c) 2001 by Rui Li. All right reserved. Any personal use is encouraged. But please include this Copyright and Author with any copy. For other uses, Please contact the author.
|
|