版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 嵌入式linux圖形用戶接口,第六章 嵌入式linux圖形用戶接口,本章主要講述嵌入式Linux圖形用戶界面(GUI,Graphic User Interface)的有關內容,即嵌入式GUI。本章首先簡單介紹嵌入式GUI的相關內容;之后以Qt為例詳細介紹其移植和編程操作;最后詳細介紹基于QTE的Qtopia平臺的移植和編程操作。GUI編程能夠提高操作的人性化,優(yōu)化產品性能,減輕用戶認知負擔,使程序更適合用戶的操作需求。 主要內容 第一節(jié) 嵌入式GUI簡介 第二節(jié) 嵌入式GUI Qt 第三節(jié) 基于Qt技術的Qtopia,1,內容: 隨著嵌入式系統的廣泛應用,PDA、機頂盒、DVD/VCD
2、播放機及WAP手機等嵌入式設備已經迅速普及,這些設備同時應該擁有華麗美觀、易于操作的圖形用戶界面。因此,在嵌入式系統中,特別是在一些消費類產品中,也逐漸出現了圖形用戶界面(GUI) 一、嵌入式GUI的特點 二、嵌入式GUI的種類,第一節(jié) 嵌入式GUI簡介,2,嵌入式系統一般不會建立在龐大的操作系統以及GUI之上,比如Windows或X Window,它們對實時性的要求非常高,對GUI的要求也更高。而且,嵌入式系統往往是一種定制設備,對GUI的需求各不相同,有些系統只要求一些圖形功能,而有些系統則要求完備的GUI支持,因此,GUI也必須是可定制的。由于受到當前嵌入式系統本身特點的影響,并受其發(fā)展
3、限制,所以嵌入式系統中的GUI應該有如下特點: 占用的存儲空間以及運行時占用資源少。 運行速度以及響應速度快。 可靠性高。 便于移植和定制。,第一節(jié) 嵌入式GUI簡介 一、嵌入式GUI的特點,3,目前,常用的嵌入式GUI系統有QT/Embedded、MicroWindows、MiniGUI和OenGUI等。下面對這幾種常用的系統做一下簡單介紹。 1. QT/Embedded QT/Embedded是著名的QT庫開發(fā)商TrollTech開發(fā)的基于FrameBuffer、面向嵌入式系統的QT版本。它的主要特點是界面美觀、色彩配比好,使用與QT/Windows和QT/X11完全一致的API接口,許多
4、基于QT的程序可以非常方便地移植到嵌入式系統;同時它具有豐富的模塊,用戶可以根據需要選擇QT/Embedded的特性集合。QT/Embedded實現了對下層輸入設備的驅動和底層圖形接口以及各基類和API。 不過,QT/Embedded對于系統資源的要求非常高,運行時需要較大的存儲空間和運行空間;而且它是基于C+實現的,而這種C+接口對于嵌入式系統中的某些應用來說顯得比較臃腫。,第一節(jié) 嵌入式GUI簡介 二、嵌入式GUI的種類,3,2. MicroWindows Microwindows是由美國CenturySoftware公司開發(fā)的開放源碼的嵌入式GUI項目。它不需要其他圖形系統的支持,可以充
5、分利用Linux提供的Framebuffer機制來進行圖形顯示。同時在底層提供了對多種芯片的支持,并基本上用C語言實現,因此移植性較強。Microwindows支持兩種API:ECMAAPIW(類Win32API)和Nano-XAPIs。這些API對Win32和XWindow系統有很好的兼容性,使程序可以很容易地從其他系統上移植過來。 由于MicroWindows為了與XWindow的兼容,采用了傳統的基于UNIXSocket的客戶端/服務器結構。此是,客戶端的畫圖、窗口建立等操作都是通過套接字與服務器通信。在這種情況下,系統就非常依賴于UNIXSocket,而UNIXSocket的傳遞需要通
6、過內核,這在一些對實時性要求比較高的系統里就不太有利。而且,Microwindows基本上是用C語言實現的,雖然增強了可移植性,但也導致了系統的運行效率不高。,第一節(jié) 嵌入式GUI簡介 二、嵌入式GUI的種類,5,3. MiniGUI MiniGUI是我國國內自主開發(fā)、比較成熟的一個圖形用戶界面系統,面向基于Linux的實時嵌入式系統,使用現有成熟的圖形引擎(SV2GALib/LibGGI),采用類似WinCE的線程機制(目前MiniGUILite版本改用微客戶端/服務器模式來提供對多進程的支持),集成了多字體和多字符集,支持硬件加速能力,充分利用顯示內存。 MiniGUI利用線程之間的同步操
7、作,實現了客戶線程和服務線程之間的微客戶端/服務器結構,因為它的客戶和服務器是同一進程的兩個不同線程。它的核心實現主要體現在消息隊列數據結構的使用上。 4. OpenGUI OpenGUI在Linux系統上已經存在很長時間了。這個庫是用C+編寫的,只提供C+接口。OpenGUI基于一個用匯編語言實現的x86圖形內核,提供了一個高層的C/C+圖形接口。OpenGUI提供了二維繪圖函數原型、消息驅動的API及BMP文件格式支持。OpenGUI功能強大,使用方便,支持鼠標和鍵盤事件,在Linux上基于FrameBuffer實現繪圖。由于OpenGUI基于匯編實現內核并利用MMX指令進行了優(yōu)化,因此運
8、行速度非常快,但是可移植性受到了影響。,第一節(jié) 嵌入式GUI簡介 二、嵌入式GUI的種類,6,一、Qt與Qt/Embedded簡介 二、Qt的特點 三、Qt的執(zhí)行過程 四、Qt的插槽機制 五、一個完整的Qt程序 六、QtDesigner介紹,第二節(jié) 嵌入式GUI Qt,7,Qt是Trolltech公司的標志性產品,是一個跨平臺的C+圖形用戶界面(GUI)工具包。Qt的最大特點就是支持多平臺處理,因為Qt對不同平臺的專門API進行了封裝。 Qt /Embedded是在嵌入式環(huán)境下所使用的Qt,具有Qt 在桌面系統的所有功能,是Trolltech公司為嵌入式設備上的圖形用戶界面和應用開發(fā)而定制的工
9、具開發(fā)包,第二節(jié) 嵌入式GUI Qt 一、Qt與Qt/Embedded簡介,8,面向對象:Qt使用模塊設計,并注重軟件構件或元素的可重用性。 構件支持:Qt提供信號(signal)和插槽(slot)概念,這是一種類型安全的方法,它允許回調,并支持對象之間在彼此不知道對方信息的情況下進行合作,這使得Qt適合于真正的構件編程。 友好的聯機幫助:Qt提供了大量的聯機參考文檔,有超文本HTML方式,也有Linix幫助手冊頁和補充說明。對于初學者,其中的指南將一步步地介紹如何進行Qt編程。 便利性: Qt是一種跨平臺的GUI工具包,它對編程者隱藏了在處理不同窗口系統時潛在的問題,Qt定義了一些類來隱藏在
10、不同操作系統上不同處理方式下的細節(jié)問題。,第二節(jié) 嵌入式GUI Qt 二、Qt的特點,9,用戶自定義:使用其他一些工具包時經常會遇到這樣一種情況,沒有真正適合需求的組件,聲稱自定義的組件對用戶來說就像一個黑匣子。而在Qt中生成用戶自定義的組件非常簡單,而且易于修改組件的行為。 國際化:Qt為本地化應用提供了完全的支持,所有用戶界面文本都可以基于消息翻譯表被翻譯成各國語言,Qt還支持雙字節(jié)16位國際字符標準。 豐富的API函數:Qt為專業(yè)應用提供了大量的函數,在Qt的API中含有大約250個C+類,大多數類都是GUI專有的。 可用戶化外觀:Qt支持主題,基于Qt的應用程序能夠在Windows外觀
11、、Motif外觀,以及其他一些用戶化外觀主題之間切換。 完整的一套組件工具:Qt編程的基本模塊稱之為組件,組件是用戶界面的組成部分,Qt含有用來創(chuàng)建專業(yè)外觀的用戶界面所需要的所有組件,第二節(jié) 嵌入式GUI Qt 二、Qt的特點,10,Qt的執(zhí)行過程如圖6-2所示。Qt應用程序初始化之后,在Qt庫的支持下響應相應的處理事件并且返回。,第二節(jié) 嵌入式GUI Qt 三、Qt的執(zhí)行過程,11,該實現過程需要Qt最主要的三個基類:QObject類、QApplication類和QWidget類。 QObject QObject類是所有能夠處理信號、插槽和事件的Qt對象的基類,能夠創(chuàng)建帶有父對象及其名字的對
12、象,對象的父對象可以看作該對象的所有者。 QApplication QApplication類負責GUI應用程序的控制流和主要設置。它包括主事件循環(huán)體,負責處理和調度所有來自窗口系統和其他資源的事件,并且處理應用程序的開始、結束以及會話管理,還包括系統和應用程序方面的設置。 QWidget QWidget類是所有用戶接口對象的基類,它繼承了QObject類的屬性。組件是用戶界面的單元組成部分,它接收來自鼠標、鍵盤和其他窗口系統的事件,并且繪制到屏幕上。QWidget類有很多成員函數,但一般不直接使用,而是通過子類繼承來使用其函數功能。例如,QPushButton、QlistBox等都是它的子類
13、。,第二節(jié) 嵌入式GUI Qt 三、Qt的執(zhí)行過程,12,在Qt程序中,事件處理采用了信號(signal)和插槽(slot)機制。信號和插槽機制的好處是不需要調用翻譯表,節(jié)省資源。利用信號和插槽進行對象間的通信是Qt最主要的特征之一。 當對象狀態(tài)發(fā)生改變的時候,發(fā)出signal通知所有的slot接收signal,盡管它并不知道哪些函數定義了slot,而slot也不知道要接收怎樣的signal。signal和slot機制真正實現了封裝的概念,但它們之間并不是一一對應的。,第二節(jié) 嵌入式GUI Qt 四、Qt的插槽機制,13,顯然,由右圖可知,同一個信號可以連接到多個插槽,多個信號也可以連接到同一
14、個插槽之中。隨時可以建立一個連接,或者取消一個連接。不過取消一個連接不是很常用,因為當一個對象被刪除后,它所包含的連接都會被自動取消。,本節(jié)給出一個例子,首先產生一個Qapplication類的實例,然后定義窗口實例并把它作為程序的主窗口,最后調用show()和exec()方法,使自動界面作為主界面,程序進入消息循環(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應用程序可以用Qt Desinger來編寫。Qt Designer的功能十分強大,并且提供了大量可供編程使用的組件,從而省略了許多重復性的工作,可以減少程序的開發(fā)周期 Qt Designer可以新建工程,并且在工程文件中自動生成關于窗體文件的.cpp、.h文件和main.cpp文件。其中,.cpp文件和.h文件也可以通過uic工具生成。之后可以通過progen命令生成,通過tmake工具生成makefil
16、e文件,再make即可得到相應的Qt應用程序。,第二節(jié) 嵌入式GUI Qt 六、QtDesigner介紹,15,一、Qtopia簡介 二、Qtopia的功能 三、Qtopia編程,第三節(jié) 基于Qt技術的Qtopia,16,Qtopia是由Trolltech公司基于Qt/Embedded庫,專門針對采用嵌入式Linux系統的消費電子設備所開發(fā)的一套應用程序包和開發(fā)庫。 Qtopia平臺是用于創(chuàng)建基于Linux設備的應用程序框架,并且包含豐富的用戶應用程序。Qtopia的設計利用了嵌入式Linux的高度優(yōu)化、高內存效率的各種功能,為眾多的多應用程序設備提供主要的通用功能。Qtopia軟件分為4個主
17、要層次,第三節(jié) 基于Qt技術的Qtopia 一、Qtopia簡介,17,Qtopia主要有以下功能: 可定制的用戶界面:Qtopia支持每像素24位,并且集成了可縮放矢量圖形(SVG)。 增強的輸入法:多種鍵盤輸入法。 廣泛的國際化支持:包括擴展的Unicodc支持,以及從右至左的文本模式。 安全執(zhí)行:這是在Linux的安全特點基礎之上構建。 Java集成:Java應用程序可以與Qtopia無縫集成。 應用程序管理:使用Qtopia平臺的服務器/啟動程序來控制進程間通信。 插件程序框架:Qtopia平臺的功能可以通過插件程序框架進行擴展。 SQL數據庫:Qtopia平臺的API使應用程序脫離了
18、對數據庫的依賴。 緊湊的視窗系統:Qtopia平臺免除了嵌入式Linux對X11的需求。 開放的開發(fā)環(huán)境。,第三節(jié) 基于Qt技術的Qtopia 二、Qtopia的功能,18,在Qtopia平臺上發(fā)布應用程序時,需要三個文件:執(zhí)行文件、啟動器文件和圖標文件。執(zhí)行文件就是前面講到的編譯鏈接后生成的Qt可執(zhí)行文件,可以根據需要編譯鏈接生成宿主機上運行的程序或開發(fā)板上運行的程序。圖標文件是一個2222大小的.png文件。啟動器文件是一個.desktop文件,用于描述Qtopia應用程序的屬性,如可執(zhí)行文件名稱、桌面圖標文件名稱、所屬程序集類型以及幫助文件名稱等。以progressbar程序為例,創(chuàng)建一個名為progressbar.desktop的啟動器文件,具體內容如下: Desktop Entry Comment=A Progressbar Program Exec=progressbar Icon=progressbar Type=Application Name=progressbar,第三節(jié) 基于Qt技術的Qtopia 三、Qtopia編程,19,將三個文件分別復制到相應的目錄: 可執(zhí)行文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學三年級(中藥學)中藥炮制學試題及答案
- 2025年中職食品加工工藝(食品罐頭)試題及答案
- 2025年高職信息管理與信息系統(數據庫應用)試題及答案
- 2025年高職(中藥學)中藥炮制技術階段測試題及答案
- 2025年中職康復技術(作業(yè)治療技術)試題及答案
- 2025年大學本科四年級(旅游管理)旅游規(guī)劃與開發(fā)測試題及答案
- DB62-T 4963-2024 地質災害警示牌技術規(guī)范
- 中職第二學年(會計基礎)原始憑證處理2026年綜合測試題及答案
- 2025年大學青少年社會工作(青少年服務實務)試題及答案
- 2025年高職(林業(yè)技術)森林培育技術綜合測試試題及答案
- NB-T20048-2011核電廠建設項目經濟評價方法
- 4第四章 入侵檢測流程
- 鈀金的選礦工藝
- 人工智能在金融策略中的應用
- JCT640-2010 頂進施工法用鋼筋混凝土排水管
- 赤壁賦的議論文800字(實用8篇)
- 高壓燃氣管道施工方案
- 輸變電工程技術標書【實用文檔】doc
- 南部山區(qū)仲宮街道鄉(xiāng)村建設規(guī)劃一張表
- GB/T 2652-1989焊縫及熔敷金屬拉伸試驗方法
- GB/T 25630-2010透平壓縮機性能試驗規(guī)程
評論
0/150
提交評論