博創(chuàng)嵌入式培訓(xùn)PPT—第6章 嵌入式linux圖形用戶接口(模.ppt_第1頁
博創(chuàng)嵌入式培訓(xùn)PPT—第6章 嵌入式linux圖形用戶接口(模.ppt_第2頁
博創(chuàng)嵌入式培訓(xùn)PPT—第6章 嵌入式linux圖形用戶接口(模.ppt_第3頁
博創(chuàng)嵌入式培訓(xùn)PPT—第6章 嵌入式linux圖形用戶接口(模.ppt_第4頁
博創(chuàng)嵌入式培訓(xùn)PPT—第6章 嵌入式linux圖形用戶接口(模.ppt_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第6章 嵌入式linux圖形用戶接口,第六章 嵌入式linux圖形用戶接口,本章主要講述嵌入式Linux圖形用戶界面(GUI,Graphic User Interface)的有關(guān)內(nèi)容,即嵌入式GUI。本章首先簡單介紹嵌入式GUI的相關(guān)內(nèi)容;之后以Qt為例詳細(xì)介紹其移植和編程操作;最后詳細(xì)介紹基于QTE的Qtopia平臺的移植和編程操作。GUI編程能夠提高操作的人性化,優(yōu)化產(chǎn)品性能,減輕用戶認(rèn)知負(fù)擔(dān),使程序更適合用戶的操作需求。 主要內(nèi)容 第一節(jié) 嵌入式GUI簡介 第二節(jié) 嵌入式GUI Qt 第三節(jié) 基于Qt技術(shù)的Qtopia,1,內(nèi)容: 隨著嵌入式系統(tǒng)的廣泛應(yīng)用,PDA、機(jī)頂盒、DVD/VCD

2、播放機(jī)及WAP手機(jī)等嵌入式設(shè)備已經(jīng)迅速普及,這些設(shè)備同時應(yīng)該擁有華麗美觀、易于操作的圖形用戶界面。因此,在嵌入式系統(tǒng)中,特別是在一些消費(fèi)類產(chǎn)品中,也逐漸出現(xiàn)了圖形用戶界面(GUI) 一、嵌入式GUI的特點(diǎn) 二、嵌入式GUI的種類,第一節(jié) 嵌入式GUI簡介,2,嵌入式系統(tǒng)一般不會建立在龐大的操作系統(tǒng)以及GUI之上,比如Windows或X Window,它們對實(shí)時性的要求非常高,對GUI的要求也更高。而且,嵌入式系統(tǒng)往往是一種定制設(shè)備,對GUI的需求各不相同,有些系統(tǒng)只要求一些圖形功能,而有些系統(tǒng)則要求完備的GUI支持,因此,GUI也必須是可定制的。由于受到當(dāng)前嵌入式系統(tǒng)本身特點(diǎn)的影響,并受其發(fā)展

3、限制,所以嵌入式系統(tǒng)中的GUI應(yīng)該有如下特點(diǎn): 占用的存儲空間以及運(yùn)行時占用資源少。 運(yùn)行速度以及響應(yīng)速度快。 可靠性高。 便于移植和定制。,第一節(jié) 嵌入式GUI簡介 一、嵌入式GUI的特點(diǎn),3,目前,常用的嵌入式GUI系統(tǒng)有QT/Embedded、MicroWindows、MiniGUI和OenGUI等。下面對這幾種常用的系統(tǒng)做一下簡單介紹。 1. QT/Embedded QT/Embedded是著名的QT庫開發(fā)商TrollTech開發(fā)的基于FrameBuffer、面向嵌入式系統(tǒng)的QT版本。它的主要特點(diǎn)是界面美觀、色彩配比好,使用與QT/Windows和QT/X11完全一致的API接口,許多

4、基于QT的程序可以非常方便地移植到嵌入式系統(tǒng);同時它具有豐富的模塊,用戶可以根據(jù)需要選擇QT/Embedded的特性集合。QT/Embedded實(shí)現(xiàn)了對下層輸入設(shè)備的驅(qū)動和底層圖形接口以及各基類和API。 不過,QT/Embedded對于系統(tǒng)資源的要求非常高,運(yùn)行時需要較大的存儲空間和運(yùn)行空間;而且它是基于C+實(shí)現(xiàn)的,而這種C+接口對于嵌入式系統(tǒng)中的某些應(yīng)用來說顯得比較臃腫。,第一節(jié) 嵌入式GUI簡介 二、嵌入式GUI的種類,3,2. MicroWindows Microwindows是由美國CenturySoftware公司開發(fā)的開放源碼的嵌入式GUI項(xiàng)目。它不需要其他圖形系統(tǒng)的支持,可以充

5、分利用Linux提供的Framebuffer機(jī)制來進(jìn)行圖形顯示。同時在底層提供了對多種芯片的支持,并基本上用C語言實(shí)現(xiàn),因此移植性較強(qiáng)。Microwindows支持兩種API:ECMAAPIW(類Win32API)和Nano-XAPIs。這些API對Win32和XWindow系統(tǒng)有很好的兼容性,使程序可以很容易地從其他系統(tǒng)上移植過來。 由于MicroWindows為了與XWindow的兼容,采用了傳統(tǒng)的基于UNIXSocket的客戶端/服務(wù)器結(jié)構(gòu)。此是,客戶端的畫圖、窗口建立等操作都是通過套接字與服務(wù)器通信。在這種情況下,系統(tǒng)就非常依賴于UNIXSocket,而UNIXSocket的傳遞需要通

6、過內(nèi)核,這在一些對實(shí)時性要求比較高的系統(tǒng)里就不太有利。而且,Microwindows基本上是用C語言實(shí)現(xiàn)的,雖然增強(qiáng)了可移植性,但也導(dǎo)致了系統(tǒng)的運(yùn)行效率不高。,第一節(jié) 嵌入式GUI簡介 二、嵌入式GUI的種類,5,3. MiniGUI MiniGUI是我國國內(nèi)自主開發(fā)、比較成熟的一個圖形用戶界面系統(tǒng),面向基于Linux的實(shí)時嵌入式系統(tǒng),使用現(xiàn)有成熟的圖形引擎(SV2GALib/LibGGI),采用類似WinCE的線程機(jī)制(目前MiniGUILite版本改用微客戶端/服務(wù)器模式來提供對多進(jìn)程的支持),集成了多字體和多字符集,支持硬件加速能力,充分利用顯示內(nèi)存。 MiniGUI利用線程之間的同步操

7、作,實(shí)現(xiàn)了客戶線程和服務(wù)線程之間的微客戶端/服務(wù)器結(jié)構(gòu),因?yàn)樗目蛻艉头?wù)器是同一進(jìn)程的兩個不同線程。它的核心實(shí)現(xiàn)主要體現(xiàn)在消息隊(duì)列數(shù)據(jù)結(jié)構(gòu)的使用上。 4. OpenGUI OpenGUI在Linux系統(tǒng)上已經(jīng)存在很長時間了。這個庫是用C+編寫的,只提供C+接口。OpenGUI基于一個用匯編語言實(shí)現(xiàn)的x86圖形內(nèi)核,提供了一個高層的C/C+圖形接口。OpenGUI提供了二維繪圖函數(shù)原型、消息驅(qū)動的API及BMP文件格式支持。OpenGUI功能強(qiáng)大,使用方便,支持鼠標(biāo)和鍵盤事件,在Linux上基于FrameBuffer實(shí)現(xiàn)繪圖。由于OpenGUI基于匯編實(shí)現(xiàn)內(nèi)核并利用MMX指令進(jìn)行了優(yōu)化,因此運(yùn)

8、行速度非??欤强梢浦残允艿搅擞绊?。,第一節(jié) 嵌入式GUI簡介 二、嵌入式GUI的種類,6,一、Qt與Qt/Embedded簡介 二、Qt的特點(diǎn) 三、Qt的執(zhí)行過程 四、Qt的插槽機(jī)制 五、一個完整的Qt程序 六、QtDesigner介紹,第二節(jié) 嵌入式GUI Qt,7,Qt是Trolltech公司的標(biāo)志性產(chǎn)品,是一個跨平臺的C+圖形用戶界面(GUI)工具包。Qt的最大特點(diǎn)就是支持多平臺處理,因?yàn)镼t對不同平臺的專門API進(jìn)行了封裝。 Qt /Embedded是在嵌入式環(huán)境下所使用的Qt,具有Qt 在桌面系統(tǒng)的所有功能,是Trolltech公司為嵌入式設(shè)備上的圖形用戶界面和應(yīng)用開發(fā)而定制的工

9、具開發(fā)包,第二節(jié) 嵌入式GUI Qt 一、Qt與Qt/Embedded簡介,8,面向?qū)ο螅篞t使用模塊設(shè)計(jì),并注重軟件構(gòu)件或元素的可重用性。 構(gòu)件支持:Qt提供信號(signal)和插槽(slot)概念,這是一種類型安全的方法,它允許回調(diào),并支持對象之間在彼此不知道對方信息的情況下進(jìn)行合作,這使得Qt適合于真正的構(gòu)件編程。 友好的聯(lián)機(jī)幫助:Qt提供了大量的聯(lián)機(jī)參考文檔,有超文本HTML方式,也有Linix幫助手冊頁和補(bǔ)充說明。對于初學(xué)者,其中的指南將一步步地介紹如何進(jìn)行Qt編程。 便利性: Qt是一種跨平臺的GUI工具包,它對編程者隱藏了在處理不同窗口系統(tǒng)時潛在的問題,Qt定義了一些類來隱藏在

10、不同操作系統(tǒng)上不同處理方式下的細(xì)節(jié)問題。,第二節(jié) 嵌入式GUI Qt 二、Qt的特點(diǎn),9,用戶自定義:使用其他一些工具包時經(jīng)常會遇到這樣一種情況,沒有真正適合需求的組件,聲稱自定義的組件對用戶來說就像一個黑匣子。而在Qt中生成用戶自定義的組件非常簡單,而且易于修改組件的行為。 國際化:Qt為本地化應(yīng)用提供了完全的支持,所有用戶界面文本都可以基于消息翻譯表被翻譯成各國語言,Qt還支持雙字節(jié)16位國際字符標(biāo)準(zhǔn)。 豐富的API函數(shù):Qt為專業(yè)應(yīng)用提供了大量的函數(shù),在Qt的API中含有大約250個C+類,大多數(shù)類都是GUI專有的。 可用戶化外觀:Qt支持主題,基于Qt的應(yīng)用程序能夠在Windows外觀

11、、Motif外觀,以及其他一些用戶化外觀主題之間切換。 完整的一套組件工具:Qt編程的基本模塊稱之為組件,組件是用戶界面的組成部分,Qt含有用來創(chuàng)建專業(yè)外觀的用戶界面所需要的所有組件,第二節(jié) 嵌入式GUI Qt 二、Qt的特點(diǎn),10,Qt的執(zhí)行過程如圖6-2所示。Qt應(yīng)用程序初始化之后,在Qt庫的支持下響應(yīng)相應(yīng)的處理事件并且返回。,第二節(jié) 嵌入式GUI Qt 三、Qt的執(zhí)行過程,11,該實(shí)現(xiàn)過程需要Qt最主要的三個基類:QObject類、QApplication類和QWidget類。 QObject QObject類是所有能夠處理信號、插槽和事件的Qt對象的基類,能夠創(chuàng)建帶有父對象及其名字的對

12、象,對象的父對象可以看作該對象的所有者。 QApplication QApplication類負(fù)責(zé)GUI應(yīng)用程序的控制流和主要設(shè)置。它包括主事件循環(huán)體,負(fù)責(zé)處理和調(diào)度所有來自窗口系統(tǒng)和其他資源的事件,并且處理應(yīng)用程序的開始、結(jié)束以及會話管理,還包括系統(tǒng)和應(yīng)用程序方面的設(shè)置。 QWidget QWidget類是所有用戶接口對象的基類,它繼承了QObject類的屬性。組件是用戶界面的單元組成部分,它接收來自鼠標(biāo)、鍵盤和其他窗口系統(tǒng)的事件,并且繪制到屏幕上。QWidget類有很多成員函數(shù),但一般不直接使用,而是通過子類繼承來使用其函數(shù)功能。例如,QPushButton、QlistBox等都是它的子類

13、。,第二節(jié) 嵌入式GUI Qt 三、Qt的執(zhí)行過程,12,在Qt程序中,事件處理采用了信號(signal)和插槽(slot)機(jī)制。信號和插槽機(jī)制的好處是不需要調(diào)用翻譯表,節(jié)省資源。利用信號和插槽進(jìn)行對象間的通信是Qt最主要的特征之一。 當(dāng)對象狀態(tài)發(fā)生改變的時候,發(fā)出signal通知所有的slot接收signal,盡管它并不知道哪些函數(shù)定義了slot,而slot也不知道要接收怎樣的signal。signal和slot機(jī)制真正實(shí)現(xiàn)了封裝的概念,但它們之間并不是一一對應(yīng)的。,第二節(jié) 嵌入式GUI Qt 四、Qt的插槽機(jī)制,13,顯然,由右圖可知,同一個信號可以連接到多個插槽,多個信號也可以連接到同一

14、個插槽之中。隨時可以建立一個連接,或者取消一個連接。不過取消一個連接不是很常用,因?yàn)楫?dāng)一個對象被刪除后,它所包含的連接都會被自動取消。,本節(jié)給出一個例子,首先產(chǎn)生一個Qapplication類的實(shí)例,然后定義窗口實(shí)例并把它作為程序的主窗口,最后調(diào)用show()和exec()方法,使自動界面作為主界面,程序進(jìn)入消息循環(huán)。代碼如下: #include #include int main(int argc, char *argv) QApplication app (argc, argv); QLabel *hello = new QLabel(Hello Qt/Embedded!, 0); app

15、.setMainWidget(hello); hello-show(); return app.exec(); ,第二節(jié) 嵌入式GUI Qt 五、一個完整的Qt程序,14,Qt應(yīng)用程序可以用Qt Desinger來編寫。Qt Designer的功能十分強(qiáng)大,并且提供了大量可供編程使用的組件,從而省略了許多重復(fù)性的工作,可以減少程序的開發(fā)周期 Qt Designer可以新建工程,并且在工程文件中自動生成關(guān)于窗體文件的.cpp、.h文件和main.cpp文件。其中,.cpp文件和.h文件也可以通過uic工具生成。之后可以通過progen命令生成,通過tmake工具生成makefil

16、e文件,再make即可得到相應(yīng)的Qt應(yīng)用程序。,第二節(jié) 嵌入式GUI Qt 六、QtDesigner介紹,15,一、Qtopia簡介 二、Qtopia的功能 三、Qtopia編程,第三節(jié) 基于Qt技術(shù)的Qtopia,16,Qtopia是由Trolltech公司基于Qt/Embedded庫,專門針對采用嵌入式Linux系統(tǒng)的消費(fèi)電子設(shè)備所開發(fā)的一套應(yīng)用程序包和開發(fā)庫。 Qtopia平臺是用于創(chuàng)建基于Linux設(shè)備的應(yīng)用程序框架,并且包含豐富的用戶應(yīng)用程序。Qtopia的設(shè)計(jì)利用了嵌入式Linux的高度優(yōu)化、高內(nèi)存效率的各種功能,為眾多的多應(yīng)用程序設(shè)備提供主要的通用功能。Qtopia軟件分為4個主

17、要層次,第三節(jié) 基于Qt技術(shù)的Qtopia 一、Qtopia簡介,17,Qtopia主要有以下功能: 可定制的用戶界面:Qtopia支持每像素24位,并且集成了可縮放矢量圖形(SVG)。 增強(qiáng)的輸入法:多種鍵盤輸入法。 廣泛的國際化支持:包括擴(kuò)展的Unicodc支持,以及從右至左的文本模式。 安全執(zhí)行:這是在Linux的安全特點(diǎn)基礎(chǔ)之上構(gòu)建。 Java集成:Java應(yīng)用程序可以與Qtopia無縫集成。 應(yīng)用程序管理:使用Qtopia平臺的服務(wù)器/啟動程序來控制進(jìn)程間通信。 插件程序框架:Qtopia平臺的功能可以通過插件程序框架進(jìn)行擴(kuò)展。 SQL數(shù)據(jù)庫:Qtopia平臺的API使應(yīng)用程序脫離了

18、對數(shù)據(jù)庫的依賴。 緊湊的視窗系統(tǒng):Qtopia平臺免除了嵌入式Linux對X11的需求。 開放的開發(fā)環(huán)境。,第三節(jié) 基于Qt技術(shù)的Qtopia 二、Qtopia的功能,18,在Qtopia平臺上發(fā)布應(yīng)用程序時,需要三個文件:執(zhí)行文件、啟動器文件和圖標(biāo)文件。執(zhí)行文件就是前面講到的編譯鏈接后生成的Qt可執(zhí)行文件,可以根據(jù)需要編譯鏈接生成宿主機(jī)上運(yùn)行的程序或開發(fā)板上運(yùn)行的程序。圖標(biāo)文件是一個2222大小的.png文件。啟動器文件是一個.desktop文件,用于描述Qtopia應(yīng)用程序的屬性,如可執(zhí)行文件名稱、桌面圖標(biāo)文件名稱、所屬程序集類型以及幫助文件名稱等。以progressbar程序?yàn)槔瑒?chuàng)建一個名為progressbar.desktop的啟動器文件,具體內(nèi)容如下: Desktop Entry Comment=A Progressbar Program Exec=progressbar Icon=progressbar Type=Application Name=progressbar,第三節(jié) 基于Qt技術(shù)的Qtopia 三、Qtopia編程,19,將三個文件分別復(fù)制到相應(yīng)的目錄: 可執(zhí)行文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論