青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

厚積薄發,滴水穿石

搬家到主站了:http://www.cnblogs.com/cokecoffe/
隨筆 - 45, 文章 - 8, 評論 - 12, 引用 - 0
數據加載中……

meego開發的學習路線(轉)

轉載時請注明出處和作者聯系方式

文章出處:http://blog.csdn.net/jack0106 
作者聯系方式:馮牮 
fengjian0106@yahoo.com.cn

 

     不同版本的meego系統,底層和中間層架構,大體是一致的,也是可以定制裁剪的。區別主要在最上層的用戶體驗層,比如handset版和notebook版的meego,UI就很不一樣(UI的開發環境,也不一樣),這篇文檔,是針對handset版meego的學習路線,做的一個總結。后面提高到的meego,未做明確說明的情況下,都是特指handset版的meego系統。

 

一、基礎
1、編程語言


1.1 meego的圖形界面,是基于qt開發的,不用說,C++肯定是首選的開發語言。

1.2 STL的使用。qt自己實現了一套類STL接口,和標準的STL僅有一些小的區別,而且也有api文檔。之所以單獨提到STL,是因為這個東西太重要的,它的核心內容,就是容器和算法,這是c++程序中最基本的數據操作,一定要掌握。(初學者,可以通過STL的中文教程來學習,然后很容易就能轉到qt的類stl接口上編寫代碼)。


1.3 meego是的中間層,不全是由qt開發的,其中的一部分,是由c語言寫出來的。其實meego上很多中間層的服務程序,都是直接用的gnome桌面環境中的開源項目,而gnome的基礎,就是基于c語言的gobject系統,所以,c語言也是一個重要的開發語言。
但是,c并不是必須的,如果懂c,相當于錦上添花,后面在第二部分,我會詳細的解釋。

 

 


2、明確一些概念


2.1 首先明確一點,qt不僅僅是用來繪圖的,qt其實是一個很完善的底層庫,除了繪圖,qt還融合了很多和UI無關的功能,比如網絡、xml、sql等等,qt都有相關的類和框架。


2.2 meego是基于qt的,準確點描述,可以是這樣:meego繼承qt,開發了一套GUI庫--libmeegotouch,meego的界面,就是用libmeegotouch開發的,而隱藏在界面背后的功能性的代碼,則是用qt開發的。


2.3 qt有一個非常好的文檔系統和眾多的example code,一定要充分利用。


2.4 雖然libmeegotouch也有文檔和example code,但是,由于libmeegotouch僅僅是負責繪制GUI,它的example code有局限性,而且數量也較少,因此對于開發人員,一定還要通過qt example code來深入學習。

 

3、qt/meego基礎學習


3.1 qmake的使用。qt程序使用qmake和pro文件進行工程管理。請看文檔 qmake Tutorial --http://doc.qt.nokia.com/4.7/qmake-tutorial.html


3.2 qt的對象系統。請看文檔 Object Model -- http://doc.qt.nokia.com/4.7/object.html
和 The Property System -- http://doc.qt.nokia.com/4.7/properties.html#qt-s-property-system


3.3 qt中的信號和槽函數,這是qt的特色之一,是對c++擴充后的新概念。請看文檔 Signals & Slots --http://doc.qt.nokia.com/4.7/signalsandslots.html


3.4 qt中的事件傳遞和主事件循環,請看文檔 The Event System --http://doc.qt.nokia.com/4.7/eventsandfilters.html 和 Another Look at Events -- http://doc.qt.nokia.com/qq/qq11-events.html,初學者可能會覺得這里很抽象,要理解事件循環,更基礎的一個概念是文件的異步操作(select/poll/epoll 函數),這個可以隨著開發的深入再慢慢體會。


3.5 qt中的容器類,這就是前面提到的qt中的類STL接口,請看文檔 Container Classes --http://doc.qt.nokia.com/4.7/containers.html

 

4、meego/qt中的widget


4.1 不管是哪一種GUI庫,都有widget的概念,相當于windows編程中的控件。按鈕、文本編輯框、下拉菜單,這些都是widget,widget概念的引入,使得圖形界面編程更加的方便快捷。


4.2 qt里面,有兩套繪圖系統,一套是QWidget+QLayoutItem系統,這個是桌面環境編程中使用的widget,另一套是Graphics View Framework,這套系統比xserver更靈活,可以對基本的圖形元素做旋轉操作,也初步實現了widget的父類QGraphicsWidget,但是并沒有進一步實例化。
關于Graphics View Framework,請看文檔 Graphics View Framework --http://doc.qt.nokia.com/4.7/graphicsview.html


4.3 meego是使用在小屏幕設備上的一個系統,如前所述,QWidget是為桌面環境設計的,不適合手持設備,雖然QGraphicsWidget并不完善,但是Graphics View Framework有很強的靈活性,所以meego選擇從QGraphicsWidget繼承,專門為小屏幕設備實現了一套widget庫--MWidget。

QWidget和MWidget雖然是兩套不同的widget,但是在設計理念和設計模式上,基本是相同的,尤其是layout系統,使用方法都是類似的。因此,如果已經熟悉QWidget了,則MWidget也可以很快的上手。如果是新手,則可以通過QWidget+QLayoutItem相關的技術文檔來學習qt中layout的基本思路,然后再閱讀MWidget的example code。下面給出一些參考文檔,
Layout Management -- http://doc.qt.nokia.com/4.7/layout.html
Widgets and Layouts -- http://doc.qt.nokia.com/4.7/widgets-and-layouts.html
MWidget Layout -- http://apidocs.meego.com/1.1/platform/html/libmeegotouch/layouts.html
Common Components  -- http://apidocs.meego.com/1.1/platform/html/index.html


4.4 在熟悉了widget+layout的基本理念和使用方法后,就可以開始看meego的example code了,閱讀libmeegotouch的源碼目錄中的example子目錄中的代碼,這是學習meego開發的最好的辦法。首先推薦閱讀的是example目錄中的子目錄  tutorial_music_catalogue,關于這個代碼,可以參考文檔http://apidocs.meego.com/mtf/tutorial.html 中的介紹。

 

4.5 qt中的widget,數量巨多,很容易讓人產生恐懼感。但是到了meego中,由于是為手持設備設計的,屏幕較小,widget的數量也少了很多,常用的widget,目前就只有10多個,像按鈕、文本編輯框這一類widget,用法都很簡單,很容易上手。唯一一個有一定難度的widget,就是MList,這個東西是手機上常用的一種widget,就是一個長的列表。MList使用了qt中的model/view framework,請看文檔  http://doc.qt.nokia.com/4.7/model-view-programming.html。libmeegotouch源碼目錄example中的子目錄,apscanner,是一個使用了model/view框架的例子,要通過這個代碼學習MList的使用。

 

 

5、meego/qt中常用的框架、技術


5.1 動畫框架,qt提供了一個Animation Framework,可以讓widget動起來(其實是讓QObject動起來),請看文檔 The Animation Framework -- http://doc.qt.nokia.com/4.7/animation-overview.html


5.2 qt中的多線程,請看文檔Thread Support in Qt -- http://doc.qt.nokia.com/4.7/threads.html


5.3 meego是為手持設備設計的,而現在流行的手機終端,都有觸摸屏,qt中,也提供了對觸摸屏手勢的支持,請看文檔 
Gestures Programming -- http://doc.qt.nokia.com/4.7/gestures-overview.html
Gestures and Multitouch  -- http://apidocs.meego.com/1.1/platform/html/index.html


5.4 meego中,為widget引入了css的概念,可以用css文件來控制MWidget的許多屬性,請看文檔 css in meego -- http://apidocs.meego.com/1.1/platform/html/libmeegotouch/styling.html

5.5 meego的國際化處理,是基于qt的國際化方案的,請看文檔 
Internationalization with Qt -- http://doc.qt.nokia.com/4.7/internationalization.html
Internationalisation Guidelines -- http://apidocs.meego.com/1.1/platform/html/libmeegotouch/i18n.html

 

二、深入
     前面的介紹,著重于meego開發的基本技能,尤其是widget的使用。隱藏在GUI后面的功能性代碼的開發,meego也提供了很多優秀的編程框架。

1、進程間通信。linux桌面環境最常用的通信方式是dbus,而且dbus已經成為一個標準,meego自然也是使用dbus。

1.1 dbus原生是用c語言開發的,同時可以綁定到很多面向對象的編程語言之上,詳細介紹,可以參考http://www.freedesktop.org/wiki/Software/dbus


1.2 gnome桌面開發中,使用的是dbus-glib庫,這個是基于gobject對象系統的c庫,詳細介紹,可以參考http://library.gnome.org/devel/dbus-glib/unstable/index.html


1.3 qt中也綁定了dbus,詳細介紹,可以參考http://doc.qt.nokia.com/4.7/intro-to-dbus.html

 

2、數據庫


2.1 meego平臺上使用了一個中心數據庫,tracker,這個也是gnome桌面項目中發展起來的一個技術,詳細介紹,可以參考 http://projects.gnome.org/tracker/


2.2 gnome桌面開發中,使用的是tracker庫(基于dbus),是基于gobject對象系統的c庫,可以從http://ftp.gnome.org/pub/GNOME/sources/tracker/0.9/ 下載


2.3 qt也對tracker做了一個綁定,有一個libqttracker庫,可以從 http://maemo.gitorious.org/maemo-af/libqttracker/trees/master 下載

 

3、多媒體編程


3.1 qt有一套多媒體編程框架Phonon ,但是這并不是qt的最終目標。可以忽略這個框架。


3.2 qt現在有一個單獨的項目,qt-mobility,其中有一個新的多媒體編程框架 Multimedia --http://doc.qt.nokia.com/qtmobility-1.1.0/multimedia.html,這個才是qt將會主推的方案,meego上也是用的這套框架。


3.3 如果只是開發音頻/視頻播放器,Multimedia已經足夠了,它把很多編解碼的細節都隱藏了,開發者可以集中精力開發用戶體驗。Multimedia的后端,使用的是gstreamer,gstreamer是gnome桌面項目中發展起來的一套多媒體編解碼框架,是基于gobject對象系統的c庫,可以參考http://www.gstreamer.net/ ,如果需要靈活的開發功能更復雜的多媒體程序,則可以使用gstreamer框架。

 

4、即時通訊程序


4.1 gnome桌面項目中,發展了一個即時通訊的庫,telepathy(基于dbus),這是一個框架,可以把不同的即時通訊程序協議容括進來,可以參考 http://telepathy.freedesktop.org/wiki/


4.2 原生的telepathy,是基于gobject開發的c庫,可以參考 http://telepathy.freedesktop.org/doc/telepathy-glib/和 http://telepathy.freedesktop.org/doc/book/


4.3 qt也綁定了telepathy,提供了一個c++接口,可以參考 http://telepathy.freedesktop.org/doc/telepathy-qt4/

 

5、meego開發中的c語言
從前面介紹的4個框架來看,原生都是用c語言開發的,而且都有基于gobject系統的c接口。qt做的,主要是對這類底層庫的一個上層封裝,或者是編程語言的綁定。對于開發者,在學習這些框架的時候,如果了解gobject系統,學習起來肯定會更方便,而且很多可以參考的文檔,也都是以c語言的原生接口為例的,包括大量的example code,也是用c寫的。所以,在開發過程中,基于gobject對象系統的c編程,是開發者的第二個有力工具。

posted on 2011-10-28 23:00 Wangkeke 閱讀(653) 評論(0)  編輯 收藏 引用 所屬分類: C

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲区中文字幕| 黄色国产精品| 亚洲午夜高清视频| 亚洲精品一区二区三区婷婷月| 久久夜色精品亚洲噜噜国产mv | 欧美日韩成人综合| 美女日韩欧美| 欧美国产国产综合| 欧美日韩免费看| 国产精品女同互慰在线看| 国产情侣一区| 亚洲国产精品女人久久久| 亚洲精品字幕| 亚洲欧美日韩国产一区二区三区| 欧美在线视频播放| 欧美国产日韩免费| 亚洲午夜一二三区视频| 久久久久久久久久久久久久一区 | 久久久噜噜噜久久中文字幕色伊伊| 久久伊人一区二区| 欧美日韩中国免费专区在线看| 国产精品日韩精品欧美在线 | 久久久五月天| 欧美成熟视频| 亚洲一区二区三区在线视频| 久久国产精品免费一区| 欧美gay视频| 国产乱码精品一区二区三区不卡 | 国产亚洲一级| 999亚洲国产精| 久久久久久一区| 亚洲精品一区二区三区蜜桃久| 欧美一区二区三区四区视频| 欧美激情一区二区久久久| 国产欧美日韩免费看aⅴ视频| 亚洲品质自拍| 久久久久久电影| av成人手机在线| 久久综合激情| 国产伦精品一区二区三区视频孕妇 | 久久久91精品国产| 99ri日韩精品视频| 卡一卡二国产精品| 国外成人在线视频| 欧美一级电影久久| 在线综合视频| 欧美女同在线视频| 亚洲精品欧洲| 欧美h视频在线| 欧美一区二区三区视频在线观看| 国产精品国产馆在线真实露脸| 亚洲精品小视频| 欧美激情精品久久久六区热门 | 久久综合九色综合久99| 国产精品久久久久久久久婷婷| 亚洲经典三级| 美女久久一区| 久色成人在线| 亚洲电影毛片| 亚洲国产精品va在线看黑人动漫| 欧美一区在线视频| 国产日韩视频一区二区三区| 小黄鸭精品密入口导航| 亚洲视频www| 国产精品国产三级国产普通话三级 | 欧美激情免费在线| 久久综合中文| 亚洲精品永久免费精品| 亚洲欧洲在线看| 亚洲国产成人在线| 欧美精品一区二区在线观看| 亚洲理伦在线| 亚洲麻豆av| 国产精品久久久久一区二区三区共 | 亚洲网站在线观看| 国产伦精品一区| 久久国产直播| 久久福利资源站| 亚洲电影在线| 亚洲国产日韩一区| 欧美午夜精品伦理| 欧美一区网站| 久久综合色一综合色88| 日韩视频一区二区三区在线播放免费观看 | 欧美在线观看www| 久久精品91久久久久久再现| 国产一区二区三区在线免费观看| 久久综合色8888| 欧美激情乱人伦| 午夜精品久久久久99热蜜桃导演| 亚洲欧美日本另类| 亚洲国产欧美日韩精品| 一本久道久久综合中文字幕| 国产精品有限公司| 欧美成人综合在线| 国产精品无人区| 欧美国产日韩一区二区三区| 欧美色欧美亚洲高清在线视频| 欧美在线视频在线播放完整版免费观看| 久久成人久久爱| 一区二区三区欧美在线| 亚洲欧美日韩一区在线观看| 亚洲国产精品123| 亚洲一区二区成人| 亚洲三级观看| 亚洲欧美日韩中文在线制服| 亚洲精品综合久久中文字幕| 午夜一区二区三视频在线观看 | 久久精品一区中文字幕| 欧美激情综合五月色丁香小说| 欧美一区激情视频在线观看| 欧美精品成人| 另类人畜视频在线| 国产精品免费看久久久香蕉| 亚洲国产美国国产综合一区二区| 国产麻豆午夜三级精品| 亚洲精品麻豆| 亚洲国产成人av好男人在线观看| 亚洲尤物在线视频观看| 欧美日韩视频第一区| 免费在线观看成人av| 国产精品一区久久| 一区二区三区国产精品| 亚洲日本va午夜在线电影| 欧美一区二区三区另类 | 久久综合一区| 裸体一区二区三区| 国产欧美一区二区三区在线看蜜臀| 91久久午夜| 亚洲国产精品女人久久久| 久久久精品2019中文字幕神马| 先锋亚洲精品| 国产精品久久久久久久7电影| 亚洲精品色图| 一区二区三区不卡视频在线观看 | 欧美fxxxxxx另类| 国产精品日韩欧美一区二区| 亚洲激情av在线| 红桃视频欧美| 久久久久国产精品午夜一区| 久久人人看视频| 伊人精品成人久久综合软件| 久久久久久9999| 欧美成人免费网站| 亚洲第一页自拍| 欧美电影免费观看| 亚洲伦理在线| 欧美与欧洲交xxxx免费观看| 国产精品一二三| 久久se精品一区精品二区| 久久综合综合久久综合| 亚洲国产欧美久久| 欧美另类高清视频在线| 一区二区三区精品国产| 欧美一区国产一区| 亚洲第一色中文字幕| 欧美成人一品| 99精品热6080yy久久 | 久久精品国产清高在天天线| 国产欧美日韩视频在线观看 | 国产精品视频免费一区| 亚洲欧美在线播放| 蜜臀av性久久久久蜜臀aⅴ| 最新国产成人在线观看| 欧美日韩国产成人| 午夜精品影院| 亚洲电影毛片| 亚洲欧美影院| 亚洲第一精品影视| 欧美性猛交一区二区三区精品| 欧美夜福利tv在线| 欧美激情一区二区三区在线视频| 一区二区三区高清视频在线观看| 国产精品你懂的| 久久久久**毛片大全| 日韩午夜在线视频| 久久网站免费| 欧美日韩精品免费观看视频| 亚洲免费中文| 亚洲高清视频在线| 欧美一区二区三区在线免费观看| 在线精品一区二区| 国产精品扒开腿做爽爽爽软件| 欧美一区日本一区韩国一区| 亚洲欧洲三级| 巨胸喷奶水www久久久免费动漫| 一区二区三区精品视频在线观看| 国产一区二区久久久| 欧美日韩国产影片| 狂野欧美激情性xxxx| 午夜精品久久久久久久白皮肤| 91久久精品国产91久久性色| 亚洲一区二区视频| 亚洲欧洲一区二区三区久久| 国产日韩综合一区二区性色av| 欧美精品在线视频| 男人的天堂成人在线| 久久9热精品视频| 亚洲一区二区三区中文字幕| 日韩网站在线观看|