詳解 Qt MeegoTouch Framework
Maemo與Moblin的合體產(chǎn)物Meego從出生就受到了大家的關(guān)注。且不談Meego與iPhone還有Andriod的優(yōu)勢(shì)與差距,相較于Maemo來(lái)說(shuō),其UI方面確實(shí)進(jìn)步了不少(WP7呢?)
Meego Touch Framework(MTF),作為提供給開發(fā)者的API lib,除了吸引更多的人投入到Meego大軍中,也支持Linux下的應(yīng)用開發(fā)。當(dāng)然,Meego本身就是Linux下的產(chǎn)物,而MTF其實(shí)也僅僅是對(duì)Qt的封裝。
想必大家多多少少都聽到過(guò)Meegotouch這個(gè)概念了。Meego Touch Framework簡(jiǎn)稱為MTF,它和QtMobility和Qt構(gòu)成Meego 手機(jī)應(yīng)用開發(fā)到最基礎(chǔ)開發(fā)庫(kù)。 MTF和QtMobility都是依賴于Qt的,顧名思義QtMobility負(fù)責(zé)和手機(jī)應(yīng)用相關(guān)的一些功能,比如設(shè)備管理(藍(lán)牙,網(wǎng)絡(luò)連接),個(gè)人信息管理(通信錄,日歷…),電話功能(電話,短信…),多媒體處理等。
而MTF的主要功能是為了讓開發(fā)者提供更方便得應(yīng)用接口,用于實(shí)現(xiàn)更具動(dòng)態(tài)效果的Meego 手機(jī)程序。通常情況下,程序員在開發(fā)Meego Qt應(yīng)用時(shí),將不會(huì)直接使用Qt提供的控件類,而是使用Meegotouch提供的控件類,它包含了MWidget,MButton等類,不過(guò)這些類并不繼承于QWidget,QPushbutton等類,而是繼承于QGraphicsWidget。也就是說(shuō)Meego的界面開發(fā)都將基于QGraphicsView框架,所有在界面上的內(nèi)容都將是一個(gè)QGraphicsItem,你可以方便的移動(dòng),旋轉(zhuǎn),縮放,以及各種動(dòng)畫效果。
Meego Touch Framework的幫助文檔在http://apidocs.meego.com/mtf/。MTF不僅可以在Meego平臺(tái)上使用,同時(shí)也可以在普通Linux上使用,本文將介紹如何在X86上編譯和使用MTF。
首先,需要安裝Qt-4.7版本MTF 只在Qt-4.7以上的版本被支持,目前可用的是Qt-4.7-rc版,如何在Linux上編譯Qt就不介紹了,不過(guò)在執(zhí)行./configure的時(shí)候有兩點(diǎn)需要注意
加上 -dbus 選項(xiàng)
加上 -opengl 選項(xiàng)
因?yàn)檫@兩個(gè)功能是編譯meegotouch必須的,如果編譯Qt-4.7的時(shí)候沒(méi)有使能該選項(xiàng),編譯Qt不會(huì)出錯(cuò)。等到編譯libmeegotouch的時(shí)候出現(xiàn)問(wèn)題再回來(lái)編譯Qt-4.7又是一段漫長(zhǎng)的時(shí)間。所以編譯Qt-4.7的步驟大概是下面的樣子
- zhu@CuteQt:~$ wget http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.0-rc1.tar.gz
- zhu@CuteQt:~$ tar xzf qt-everywhere-opensource-src-4.7.0-rc1.tar.gz
- zhu@CuteQt:~$ cd qt-everywhere-opensource-src-4.7.0-rc1
- zhu@CuteQt:~/qt-everywhere-opensource-src-4.7.0-rc1$ ./configure -debug -dbus -confirm-license -opengl -fontconfig
- zhu@CuteQt:~/qt-everywhere-opensource-src-4.7.0-rc1$ make
- zhu@CuteQt:~/qt-everywhere-opensource-src-4.7.0-rc1$ sudo make install
編譯libmeegotouch庫(kù)從git 倉(cāng)庫(kù)上下載然后,編譯安裝就可以(git 倉(cāng)庫(kù)里的代碼要比meego里用的要新,所以git中的一些例子是沒(méi)法運(yùn)行在meego中的)
- zhu@CuteQt:~$ git clone git://gitorious.org/meegotouch/libmeegotouch.git
- zhu@CuteQt:~$ cd libmeegotouch
- zhu@CuteQt:~/libmeegotouch $ export QTDIR=/usr/local/Trolltech/Qt-4.7.0/
- zhu@CuteQt:~/libmeegotouch $ ./configure
- zhu@CuteQt:~/libmeegotouch $ make
- zhu@CuteQt:~/libmeegotouch $ sudo make install
不過(guò),到這個(gè)步驟,你用libmeegotouch庫(kù)編譯出來(lái)去編譯程序還是無(wú)法運(yùn)行的,需要再安裝一個(gè)主題包
安裝一個(gè)meegotouch主題包meego應(yīng)用的主題(也就是css文件)分不同的級(jí)別,系統(tǒng)有一個(gè)樣式表,每個(gè)應(yīng)用又有自己的樣式表,即使在同一個(gè)應(yīng)用中也可以根據(jù)需要為某個(gè)控件設(shè)置一個(gè)獨(dú)立的ID,然后給那個(gè)特有的ID加載樣式表,詳細(xì)內(nèi)容,大家可以去apidocs.meego.com/mtf中去查找對(duì)應(yīng)文檔,下面只是簡(jiǎn)要介紹如果安裝一個(gè)系統(tǒng)的默認(rèn)主題包
- zhu@CuteQt:~$ git clone git://gitorious.org/meegotouch/meegotouch-theme.git
- zhu@CuteQt:~$ cd meegotouch-theme
- zhu@CuteQt:~/meegotouch-theme $ $QTDIR/bin/qmake #注意前面設(shè)置過(guò)QTDIR
- zhu@CuteQt:~/meegotouch-theme $ sudo make install
找個(gè)程序試試吧libmeego目錄下有一個(gè)examples目錄,和普通的Qt程序一樣,執(zhí)行qmake;make就可以了,下面是我運(yùn)行的helloworld應(yīng)用截圖,是不是和傳統(tǒng)的Qt程序感覺有點(diǎn)不一樣,你可以利用鼠標(biāo)將按鈕拖動(dòng)看看什么效果:)
如果你在運(yùn)行helloworld的時(shí)候提示找不到libmeegotouchcore.so ,可以修改LD_LIBRARY_PATH變量為/urr/local/lib目錄上。
另: 如果是你自己開發(fā)的meegotouch應(yīng)用時(shí),需要注意在.pro文件中加上 CONFIG+=meegotouch,這樣才會(huì)將編譯需要的頭文件和庫(kù)文件路徑加入到Makefile中。
小結(jié):Qt MeegoTouch Framework 對(duì)內(nèi)容介紹完了,想必你對(duì)MTF多多少少了解了吧,***希望希望本文能對(duì)你有所幫助。
【編輯推薦】
4、Qt Embedded基于PC調(diào)試嵌入式應(yīng)用程序
5、在Qt框架下配置MeeGo SDK Xephyr運(yùn)行環(huán)境
【責(zé)任編輯:李程站 TEL:(010)68476606】