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