




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章嵌入式linux圖形用戶接口本章主要講述嵌入式Linux圖形用戶界面(GUI,GraphicUserInterface)的有關(guān)內(nèi)容,即嵌入式GUI。本章首先簡(jiǎn)單介紹嵌入式GUI的相關(guān)內(nèi)容;之后以Qt為例詳細(xì)介紹其移植和編程操作;最后詳細(xì)介紹基于QTE的Qtopia平臺(tái)的移植和編程操作。GUI編程能夠提高操作的人性化,優(yōu)化產(chǎn)品性能,減輕用戶認(rèn)知負(fù)擔(dān),使程序更適合用戶的操作需求。主要內(nèi)容
第一節(jié)嵌入式GUI簡(jiǎn)介
第二節(jié)嵌入式GUI——Qt
第三節(jié)基于Qt技術(shù)的Qtopia1內(nèi)容:隨著嵌入式系統(tǒng)的廣泛應(yīng)用,PDA、機(jī)頂盒、DVD/VCD播放機(jī)及WAP手機(jī)等嵌入式設(shè)備已經(jīng)迅速普及,這些設(shè)備同時(shí)應(yīng)該擁有華麗美觀、易于操作的圖形用戶界面。因此,在嵌入式系統(tǒng)中,特別是在一些消費(fèi)類產(chǎn)品中,也逐漸出現(xiàn)了圖形用戶界面(GUI)
一、嵌入式GUI的特點(diǎn)
二、嵌入式GUI的種類第一節(jié)嵌入式GUI簡(jiǎn)介
2嵌入式系統(tǒng)一般不會(huì)建立在龐大的操作系統(tǒng)以及GUI之上,比如Windows或XWindow,它們對(duì)實(shí)時(shí)性的要求非常高,對(duì)GUI的要求也更高。而且,嵌入式系統(tǒng)往往是一種定制設(shè)備,對(duì)GUI的需求各不相同,有些系統(tǒng)只要求一些圖形功能,而有些系統(tǒng)則要求完備的GUI支持,因此,GUI也必須是可定制的。由于受到當(dāng)前嵌入式系統(tǒng)本身特點(diǎn)的影響,并受其發(fā)展限制,所以嵌入式系統(tǒng)中的GUI應(yīng)該有如下特點(diǎn):占用的存儲(chǔ)空間以及運(yùn)行時(shí)占用資源少。運(yùn)行速度以及響應(yīng)速度快。可靠性高。便于移植和定制。
第一節(jié)嵌入式GUI簡(jiǎn)介——一、嵌入式GUI的特點(diǎn)
3目前,常用的嵌入式GUI系統(tǒng)有QT/Embedded、MicroWindows、MiniGUI和OenGUI等。下面對(duì)這幾種常用的系統(tǒng)做一下簡(jiǎn)單介紹。1.QT/EmbeddedQT/Embedded是著名的QT庫開發(fā)商TrollTech開發(fā)的基于FrameBuffer、面向嵌入式系統(tǒng)的QT版本。它的主要特點(diǎn)是界面美觀、色彩配比好,使用與QT/Windows和QT/X11完全一致的API接口,許多基于QT的程序可以非常方便地移植到嵌入式系統(tǒng);同時(shí)它具有豐富的模塊,用戶可以根據(jù)需要選擇QT/Embedded的特性集合。QT/Embedded實(shí)現(xiàn)了對(duì)下層輸入設(shè)備的驅(qū)動(dòng)和底層圖形接口以及各基類和API。不過,QT/Embedded對(duì)于系統(tǒng)資源的要求非常高,運(yùn)行時(shí)需要較大的存儲(chǔ)空間和運(yùn)行空間;而且它是基于C++實(shí)現(xiàn)的,而這種C++接口對(duì)于嵌入式系統(tǒng)中的某些應(yīng)用來說顯得比較臃腫。第一節(jié)嵌入式GUI簡(jiǎn)介——二、嵌入式GUI的種類32.MicroWindowsMicrowindows是由美國CenturySoftware公司開發(fā)的開放源碼的嵌入式GUI項(xiàng)目。它不需要其他圖形系統(tǒng)的支持,可以充分利用Linux提供的Framebuffer機(jī)制來進(jìn)行圖形顯示。同時(shí)在底層提供了對(duì)多種芯片的支持,并基本上用C語言實(shí)現(xiàn),因此移植性較強(qiáng)。Microwindows支持兩種API:ECMAAPIW(類Win32API)和Nano-XAPIs。這些API對(duì)Win32和XWindow系統(tǒng)有很好的兼容性,使程序可以很容易地從其他系統(tǒng)上移植過來。由于MicroWindows為了與XWindow的兼容,采用了傳統(tǒng)的基于UNIXSocket的客戶端/服務(wù)器結(jié)構(gòu)。此是,客戶端的畫圖、窗口建立等操作都是通過套接字與服務(wù)器通信。在這種情況下,系統(tǒng)就非常依賴于UNIXSocket,而UNIXSocket的傳遞需要通過內(nèi)核,這在一些對(duì)實(shí)時(shí)性要求比較高的系統(tǒng)里就不太有利。而且,Microwindows基本上是用C語言實(shí)現(xiàn)的,雖然增強(qiáng)了可移植性,但也導(dǎo)致了系統(tǒng)的運(yùn)行效率不高。第一節(jié)嵌入式GUI簡(jiǎn)介——二、嵌入式GUI的種類53.MiniGUIMiniGUI是我國國內(nèi)自主開發(fā)、比較成熟的一個(gè)圖形用戶界面系統(tǒng),面向基于Linux的實(shí)時(shí)嵌入式系統(tǒng),使用現(xiàn)有成熟的圖形引擎(SV2GALib/LibGGI),采用類似WinCE的線程機(jī)制(目前MiniGUILite版本改用微客戶端/服務(wù)器模式來提供對(duì)多進(jìn)程的支持),集成了多字體和多字符集,支持硬件加速能力,充分利用顯示內(nèi)存。MiniGUI利用線程之間的同步操作,實(shí)現(xiàn)了客戶線程和服務(wù)線程之間的微客戶端/服務(wù)器結(jié)構(gòu),因?yàn)樗目蛻艉头?wù)器是同一進(jìn)程的兩個(gè)不同線程。它的核心實(shí)現(xiàn)主要體現(xiàn)在消息隊(duì)列數(shù)據(jù)結(jié)構(gòu)的使用上。4.OpenGUIOpenGUI在Linux系統(tǒng)上已經(jīng)存在很長(zhǎng)時(shí)間了。這個(gè)庫是用C++編寫的,只提供C++接口。OpenGUI基于一個(gè)用匯編語言實(shí)現(xiàn)的x86圖形內(nèi)核,提供了一個(gè)高層的C/C++圖形接口。OpenGUI提供了二維繪圖函數(shù)原型、消息驅(qū)動(dòng)的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)行速度非???,但是可移植性受到了影響。
第一節(jié)嵌入式GUI簡(jiǎn)介——二、嵌入式GUI的種類6一、Qt與Qt/Embedded簡(jiǎn)介二、Qt的特點(diǎn)三、Qt的執(zhí)行過程四、Qt的插槽機(jī)制五、一個(gè)完整的Qt程序六、QtDesigner介紹第二節(jié)嵌入式GUI——Qt
7Qt是Trolltech公司的標(biāo)志性產(chǎn)品,是一個(gè)跨平臺(tái)的C++圖形用戶界面(GUI)工具包。Qt的最大特點(diǎn)就是支持多平臺(tái)處理,因?yàn)镼t對(duì)不同平臺(tái)的專門API進(jìn)行了封裝。Qt/Embedded是在嵌入式環(huán)境下所使用的Qt,具有Qt在桌面系統(tǒng)的所有功能,是Trolltech公司為嵌入式設(shè)備上的圖形用戶界面和應(yīng)用開發(fā)而定制的工具開發(fā)包第二節(jié)嵌入式GUI——Qt——一、Qt與Qt/Embedded簡(jiǎn)介
8而且,嵌入式系統(tǒng)往往是一種定制設(shè)備,對(duì)GUI的需求各不相同,有些系統(tǒng)只要求一些圖形功能,而有些系統(tǒng)則要求完備的GUI支持,因此,GUI也必須是可定制的。對(duì)于初學(xué)者,其中的指南將一步步地介紹如何進(jìn)行Qt編程。第一節(jié)嵌入式GUI簡(jiǎn)介——二、嵌入式GUI的種類OpenGUI在Linux系統(tǒng)上已經(jīng)存在很長(zhǎng)時(shí)間了。豐富的API函數(shù):Qt為專業(yè)應(yīng)用提供了大量的函數(shù),在Qt的API中含有大約250個(gè)C++類,大多數(shù)類都是GUI專有的。QT/EmbeddedMicrowindows是由美國CenturySoftware公司開發(fā)的開放源碼的嵌入式GUI項(xiàng)目。一、Qtopia簡(jiǎn)介它不需要其他圖形系統(tǒng)的支持,可以充分利用Linux提供的Framebuffer機(jī)制來進(jìn)行圖形顯示。二、嵌入式GUI的種類Qt/e與qtopia程序設(shè)計(jì)是本章的重點(diǎn)與難點(diǎn)。整個(gè)章節(jié)總共包括三個(gè)部分:首先簡(jiǎn)單介紹了嵌入式GUI的相關(guān)內(nèi)容;廣泛的國際化支持:包括擴(kuò)展的Unicodc支持,以及從右至左的文本模式。插件程序框架:Qtopia平臺(tái)的功能可以通過插件程序框架進(jìn)行擴(kuò)展。QApplicationapp(argc,argv);面向?qū)ο螅篞t使用模塊設(shè)計(jì),并注重軟件構(gòu)件或元素的可重用性。構(gòu)件支持:Qt提供信號(hào)(signal)和插槽(slot)概念,這是一種類型安全的方法,它允許回調(diào),并支持對(duì)象之間在彼此不知道對(duì)方信息的情況下進(jìn)行合作,這使得Qt適合于真正的構(gòu)件編程。友好的聯(lián)機(jī)幫助:Qt提供了大量的聯(lián)機(jī)參考文檔,有超文本HTML方式,也有Linix幫助手冊(cè)頁和補(bǔ)充說明。對(duì)于初學(xué)者,其中的指南將一步步地介紹如何進(jìn)行Qt編程。便利性:Qt是一種跨平臺(tái)的GUI工具包,它對(duì)編程者隱藏了在處理不同窗口系統(tǒng)時(shí)潛在的問題,Qt定義了一些類來隱藏在不同操作系統(tǒng)上不同處理方式下的細(xì)節(jié)問題。第二節(jié)嵌入式GUI——Qt——二、Qt的特點(diǎn)
9用戶自定義:使用其他一些工具包時(shí)經(jīng)常會(huì)遇到這樣一種情況,沒有真正適合需求的組件,聲稱自定義的組件對(duì)用戶來說就像一個(gè)黑匣子。而在Qt中生成用戶自定義的組件非常簡(jiǎn)單,而且易于修改組件的行為。國際化:Qt為本地化應(yīng)用提供了完全的支持,所有用戶界面文本都可以基于消息翻譯表被翻譯成各國語言,Qt還支持雙字節(jié)16位國際字符標(biāo)準(zhǔn)。豐富的API函數(shù):Qt為專業(yè)應(yīng)用提供了大量的函數(shù),在Qt的API中含有大約250個(gè)C++類,大多數(shù)類都是GUI專有的??捎脩艋庥^:Qt支持主題,基于Qt的應(yīng)用程序能夠在Windows外觀、Motif外觀,以及其他一些用戶化外觀主題之間切換。完整的一套組件工具:Qt編程的基本模塊稱之為組件,組件是用戶界面的組成部分,Qt含有用來創(chuàng)建專業(yè)外觀的用戶界面所需要的所有組件第二節(jié)嵌入式GUI——Qt——二、Qt的特點(diǎn)
10Qt的執(zhí)行過程如圖6-2所示。Qt應(yīng)用程序初始化之后,在Qt庫的支持下響應(yīng)相應(yīng)的處理事件并且返回。第二節(jié)嵌入式GUI——Qt——三、Qt的執(zhí)行過程
11該實(shí)現(xiàn)過程需要Qt最主要的三個(gè)基類:QObject類、QApplication類和QWidget類。QObjectQObject類是所有能夠處理信號(hào)、插槽和事件的Qt對(duì)象的基類,能夠創(chuàng)建帶有父對(duì)象及其名字的對(duì)象,對(duì)象的父對(duì)象可以看作該對(duì)象的所有者。QApplicationQApplication類負(fù)責(zé)GUI應(yīng)用程序的控制流和主要設(shè)置。它包括主事件循環(huán)體,負(fù)責(zé)處理和調(diào)度所有來自窗口系統(tǒng)和其他資源的事件,并且處理應(yīng)用程序的開始、結(jié)束以及會(huì)話管理,還包括系統(tǒng)和應(yīng)用程序方面的設(shè)置。QWidgetQWidget類是所有用戶接口對(duì)象的基類,它繼承了QObject類的屬性。組件是用戶界面的單元組成部分,它接收來自鼠標(biāo)、鍵盤和其他窗口系統(tǒng)的事件,并且繪制到屏幕上。QWidget類有很多成員函數(shù),但一般不直接使用,而是通過子類繼承來使用其函數(shù)功能。例如,QPushButton、QlistBox等都是它的子類。第二節(jié)嵌入式GUI——Qt——三、Qt的執(zhí)行過程
12在Qt程序中,事件處理采用了信號(hào)(signal)和插槽(slot)機(jī)制。信號(hào)和插槽機(jī)制的好處是不需要調(diào)用翻譯表,節(jié)省資源。利用信號(hào)和插槽進(jìn)行對(duì)象間的通信是Qt最主要的特征之一。當(dāng)對(duì)象狀態(tài)發(fā)生改變的時(shí)候,發(fā)出signal通知所有的slot接收signal,盡管它并不知道哪些函數(shù)定義了slot,而slot也不知道要接收怎樣的signal。signal和slot機(jī)制真正實(shí)現(xiàn)了封裝的概念,但它們之間并不是一一對(duì)應(yīng)的。
第二節(jié)嵌入式GUI——Qt——四、Qt的插槽機(jī)制
13顯然,由右圖可知,同一個(gè)信號(hào)可以連接到多個(gè)插槽,多個(gè)信號(hào)也可以連接到同一個(gè)插槽之中。隨時(shí)可以建立一個(gè)連接,或者取消一個(gè)連接。不過取消一個(gè)連接不是很常用,因?yàn)楫?dāng)一個(gè)對(duì)象被刪除后,它所包含的連接都會(huì)被自動(dòng)取消。本節(jié)給出一個(gè)例子,首先產(chǎn)生一個(gè)Qapplication類的實(shí)例,然后定義窗口實(shí)例并把它作為程序的主窗口,最后調(diào)用show()和exec()方法,使自動(dòng)界面作為主界面,程序進(jìn)入消息循環(huán)。代碼如下:#include<qapplication.h>#include<qlabel.h>intmain(intargc,char**argv){ QApplicationapp(argc,argv); QLabel*hello=newQLabel("HelloQt/Embedded!",0); app.setMainWidget(hello); hello->show(); returnapp.exec();}第二節(jié)嵌入式GUI——Qt——五、一個(gè)完整的Qt程序
14Qt應(yīng)用程序可以用QtDesinger來編寫。QtDesigner的功能十分強(qiáng)大,并且提供了大量可供編程使用的組件,從而省略了許多重復(fù)性的工作,可以減少程序的開發(fā)周期QtDesigner可以新建工程,并且在工程文件中自動(dòng)生成關(guān)于窗體文件的.cpp、.h文件和main.cpp文件。其中,.cpp文件和.h文件也可以通過uic工具生成。之后可以通過progen命令生成,通過tmake工具生成makefile文件,再make即可得到相應(yīng)的Qt應(yīng)用程序。第二節(jié)嵌入式GUI——Qt——六、QtDesigner介紹
15一、Qtopia簡(jiǎn)介
二、Qtopia的功能
三、Qtopia編程
第三節(jié)基于Qt技術(shù)的Qtopia
16Qtopia是由Trolltech公司基于Qt/Embedded庫,專門針對(duì)采用嵌入式Linux系統(tǒng)的消費(fèi)電子設(shè)備所開發(fā)的一套應(yīng)用程序包和開發(fā)庫。Qtopia平臺(tái)是用于創(chuàng)建基于Linux設(shè)備的應(yīng)用程序框架,并且包含豐富的用戶應(yīng)用程序。Qtopia的設(shè)計(jì)利用了嵌入式Linux的高度優(yōu)化、高內(nèi)存效率的各種功能,為眾多的多應(yīng)用程序設(shè)備提供主要的通用功能。Qtopia軟件分為4個(gè)主要層次
第三節(jié)基于Qt技術(shù)的Qtopia——一、Qtopia簡(jiǎn)介
17Qtopia主要有以下功能:可定制的用戶界面:Qtopia支持每像素24位,并且集成了可縮放矢量圖形(SVG)。增強(qiáng)的輸入法:多種鍵盤輸入法。廣泛的國際化支持:包括擴(kuò)展的Unicodc支持,以及從右至左的文本模式。安全執(zhí)行:這是在Linux的安全特點(diǎn)基礎(chǔ)之上構(gòu)建。Java集成:Java應(yīng)用程序可以與Qtopia無縫集成。應(yīng)用程序管理:使用Qtopia平臺(tái)的服務(wù)器/啟動(dòng)程序來控制進(jìn)程間通信。插件程序框架:Qtopia平臺(tái)的功能可以通過插件程序框架進(jìn)行擴(kuò)展。SQL數(shù)據(jù)庫:Qtopia平臺(tái)的API使應(yīng)用程序脫離了對(duì)數(shù)據(jù)庫的依賴。緊湊的視窗系統(tǒng):Qtopia平臺(tái)免除了嵌入式Linux對(duì)X11的需求。開放的開發(fā)環(huán)境。第三節(jié)基于Qt技術(shù)的Qt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淺析趣味性教學(xué)方法在小學(xué)數(shù)學(xué)中的應(yīng)用
- 貨代業(yè)務(wù)工作總結(jié)
- 小兒圍手術(shù)期氣道管理策略
- 2025年納他霉素食品防腐劑合作協(xié)議書
- 民間到課堂-土家族“耍?!蔽璧附滩臉?gòu)建
- 河流沉積物重金屬形態(tài)的分布特征及其影響因素
- 網(wǎng)吧網(wǎng)咖企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 2025年大型工程基礎(chǔ)穩(wěn)定性勘探及檢測(cè)設(shè)備合作協(xié)議書
- 機(jī)器人眼部追蹤電機(jī)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 網(wǎng)上音樂服務(wù)企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 醫(yī)學(xué)口腔科急救藥品及急救措施課件
- 土木工程無損檢測(cè)技術(shù)課件
- 中國古代突騎研究
- 2023瓷磚店和裝修公司合作協(xié)議完整版
- 高中數(shù)學(xué)圓錐曲線知識(shí)點(diǎn)總結(jié)
- 第14章歐姆定律復(fù)習(xí)說課稿 2022-2023學(xué)年蘇科版九年級(jí)物理上冊(cè)
- 技術(shù)部出差申請(qǐng)單(模版)
- 化妝品功效評(píng)價(jià)
- 【眼科學(xué)基礎(chǔ)】眼科癥狀學(xué)
- 4.與食品經(jīng)營相適應(yīng)的主要設(shè)備設(shè)施布局操作流程等文件
- 固定污染源煙氣排放連續(xù)監(jiān)測(cè)技術(shù)規(guī)范(HJ 75-2017)考試題
評(píng)論
0/150
提交評(píng)論