




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 第第13章章 圖形用戶接口(圖形用戶接口(GUI) 定義n圖形用戶接口(Graphics User Interface,GUI),又叫桌面系統(tǒng)、窗口管理系統(tǒng)、圖形操作環(huán)境、圖形用戶界面等,是操作系統(tǒng)和用戶的人機(jī)接口。GUI極大地方便了非專業(yè)用戶的使用,人們不再需要死記硬背大量的命令,而可以通過窗口、菜單方便地進(jìn)行操作。 13.1圖形用戶接口的層次結(jié)構(gòu)圖形用戶接口的層次結(jié)構(gòu)13.1.1圖形基礎(chǔ)設(shè)施n圖形基礎(chǔ)設(shè)施是一種底層的圖形驅(qū)動引擎,一般是由操作系統(tǒng)提供。它是用作其他更高一層圖形或者圖形應(yīng)用程序的基本函數(shù)庫/依賴庫,在其之上可以針對某些特定應(yīng)用需求做進(jìn)一步的封裝。譬如,在對于只需要單任務(wù)的低
2、端應(yīng)用,可以以API函數(shù)的形式,封裝成靜態(tài)或者動態(tài)的高級圖形函數(shù)庫。而在更多的場合,用戶是需要類似Windows的桌面系統(tǒng),這樣就要構(gòu)建多任務(wù)GUI窗口管理系統(tǒng)。在Linux環(huán)境下,常見的圖形基礎(chǔ)設(shè)施有SVGALib(VGA)、X Window(Xlib)、LibGGI和FrameBuffer等。13.1.2高級圖形函數(shù)庫n高級圖形函數(shù)庫提供的圖形界面編程接口主要分為兩大類,一類只提供基本的畫點(diǎn)繪線、文本區(qū)域處理等,如SDL(standard drawing library);另一類就是以窗口部件(widget,亦稱為控件、部件等)形式,采用面向?qū)ο蠓绞竭M(jìn)行可視化的編程,可用于嵌入式GUI系統(tǒng)
3、(需要諸如pThread等消息處理函數(shù)庫的支持)和可以運(yùn)行在GUI系統(tǒng)上的應(yīng)用程序的開發(fā),諸如GTK,QT和PEG等。13.1.3 GUI窗口管理系統(tǒng)nGUI窗口管理系統(tǒng)是一個非常復(fù)雜的系統(tǒng),很多時候甚至就類似于一個操作系統(tǒng),它是嵌入式系統(tǒng)設(shè)計中迄今為止沒有很好解決的難點(diǎn)之一。目前,在桌面GUI系統(tǒng)領(lǐng)域主要有X-Windows、KDE、GNOME等,在嵌入式系統(tǒng)領(lǐng)域,主要有MiniGUI、Nano-X(Microwindows)、OpenGUI和Qpe(Qt Palmtop Environment)等。13.2 桌面Linux系統(tǒng)中GUI nKDE(Kool Desktop Environme
4、nt)與GNOME(GNU Network Object Environment)是目前桌面Linux/UNIX系統(tǒng)中最常用的桌面GUI窗口系統(tǒng)。MiniGUI、Qt/E和Nano-X則是嵌入式系統(tǒng)中廣泛應(yīng)用的嵌入式GUI系統(tǒng)。13.2.1 KDEnKDE是1996年德國Matthias Ettrich發(fā)起了符合GPL規(guī)范的開源項目,與之前各種基于X Window的圖形用戶環(huán)境不同的是,KDE并非針對系統(tǒng)管理員等高級用戶,而是鎖定為普通的終端用戶,即希望KDE能夠包含用戶日常應(yīng)用所需要的所有應(yīng)用程序組件,例如Web瀏覽器、電子郵件客戶端、辦公套件、圖形圖像處理軟件等。 13.2.2 GNOME
5、nGNOME是1997年墨西哥年僅26歲的程序員Miguel De Icaza發(fā)起的開源項目,目前諸如RedHat/Fedora、SuseLinux發(fā)行版都默認(rèn)使用它。它功能上的特性和KDE類似,并且相對要輕便些 13.3 嵌入式Linux系統(tǒng)GUI n在現(xiàn)代的嵌入式人機(jī)系統(tǒng)中,人是用戶和主動的參與者,能與機(jī)器對話,要求機(jī)器對人的各種動作做出響應(yīng)。因此,圖形用戶界面已經(jīng)成為嵌入式應(yīng)用系統(tǒng)研制中的重點(diǎn)之一。典型的嵌入式GUI 系統(tǒng)有緊縮的 X Window 系統(tǒng)、MiniGUI、Nano-X(MicroWindows)、Tiny X(緊縮版的X-Windows)、OpenGUI、QT/Embed
6、ded 等.13.3.1 MiniGUInMiniGUI是1998年底推出的一款面向嵌入式系統(tǒng)或者實時系統(tǒng)的GUI系統(tǒng),是國內(nèi)最早出現(xiàn)的、在國際上有一定知名度的幾個自由軟件項目之一,最先是由原清華大學(xué)教師魏永明先生主持開發(fā),現(xiàn)由北京飛漫軟件技術(shù)有限公司進(jìn)行商業(yè)化維護(hù)和運(yùn)作。自1999 年初以遵循 GPL 協(xié)議發(fā)布第一個版本以來,MiniGUI 已廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)及工業(yè)儀表、便攜式多媒體播放機(jī)、查詢終端等產(chǎn)品和領(lǐng)域。13.3.2 QtopianQtopia是嵌入式GUI窗口系統(tǒng),也叫做嵌入式Linux的桌面系統(tǒng),是Trolltech 面向嵌入式設(shè)備的Qt掌上機(jī)環(huán)境(Q
7、t Palmtop Environment,Qpe)。它建立在Qt/ Embedded(即Qt/E)之上,基于Qt/E開發(fā)出來的程序就可以放到這個桌面上,為開發(fā)提供了一個類似于Windows這樣易于使用的界面。Qtopia分為開源的PDA版本Qtopia和收費(fèi)的手機(jī)版Qtopia,前者提供PDA的桌面系統(tǒng)基本源代碼,后者還包括手機(jī)模塊代碼等。 13.3.3 Nano-XnNano-X的前身就是Century Software 推出的開源項目Microwindows。它主要采用C語言進(jìn)行開發(fā),采用C/S體系結(jié)構(gòu),提供了相對完善的圖形功能,并且具有分層設(shè)計。最底層是屏幕和輸入設(shè)備驅(qū)動程序(關(guān)于鍵盤
8、或鼠標(biāo))來與實際硬件交互。在中間層,可移植的圖形引擎提供對線的繪制、區(qū)域的填充、多邊形、裁剪以及顏色模型的支持。 13.4 MiniGUI的開發(fā)初步nMiniGUI具有良好的軟件架構(gòu),通過抽象層將MiniGUI 上層和底層操作系統(tǒng)隔離開來。如圖13.4.1所示,基于MiniGUI 的應(yīng)用程序一般通過ANSI C 庫、操作系統(tǒng)和驅(qū)動程序接口以及MiniGUI 自身提供的API 來實現(xiàn)自己的功能;MiniGUI 中的“可移植層”可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來,而上層應(yīng)用程序則無需關(guān)心底層的硬件平臺輸出和輸入設(shè)備。13.4 MiniGUI的開發(fā)初步Lorem ipsum dolor sit
9、 amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.13.4.1 MiniGUI 的開發(fā)環(huán)境 nMiniGUI 的開發(fā)可以在Linux 或Windows操作系統(tǒng)下進(jìn)行。由于MiniGUI 完全用C 來編寫,具有非常好的移植性,也使得MiniGUI 應(yīng)用程序的交叉編譯工作十分方便。一般而言,為嵌入式設(shè)備編寫的應(yīng)用程序可以在任何安裝在針對該設(shè)備的交叉編譯工具鏈的平臺上進(jìn)行編譯,比如在桌面Linux 環(huán)境下安裝針對ARM CPU平臺交叉編譯器(ar
10、m-linux-gcc等),然后再對應(yīng)用程序進(jìn)行交叉編譯。 LOREM IPSUM DOLORn這里給出windows下面編譯minigui的步驟(wvfb):n 首先要從網(wǎng)上下載MinGui For Win32 開發(fā)包的源代碼。minigui-dev-1.6.9- win32.tar.tar;n 解壓后,把dll文件夾下的minigui.lib pthreadVC1.lib拷貝到helloworld文件夾下(以便程序能夠在當(dāng)前目錄下找到DLL文件),然后進(jìn)入helloworld文件夾找到helloworld.dsw,用vc+打開;LOREM IPSUM DOLORn 然后在工程菜單內(nèi)設(shè)置選擇
11、C/C分類中選擇預(yù)處理n在包含路徑中填入./include,./include/minigui,./include/pthread-win32n 在LINKE目錄下選擇general,然后把LIB里的庫文件加在對象/庫模塊的后面,也就是那兩個minigui.lib pthreadVC1.lib,n 最后在分類中選擇INPUT把庫文件地址連接進(jìn)去也就是./LIBLOREM IPSUM DOLORn 打開wvfb文件夾下的wvfb.exe,然后在vc+中執(zhí)行helloworld .n這里要注意的是,MiniGUI for Win32是預(yù)編譯的函數(shù)庫,因此,其中的功能特性是固定的,包括編譯時選項和運(yùn)
12、行時選項。 13.4.2 MiniGUI的移植n1. PC 機(jī)上配置,編譯,安裝,運(yùn)行MiniGUIn(1)在redhat9.0 上配置FrameBuffern要激活VESA Frame Buffer 驅(qū)動程序,需要修改/boot/grub/menu.lst 文件,并在kernel打頭的一行添加vga=0 x0317.n其中Red Hat Linux (2.4.208,F(xiàn)rameBuffer)就是設(shè)置了VESA FrameBuffer 的引導(dǎo)選項。 LOREM IPSUM DOLORn(2)在PC上編譯并安裝MiniGUI開發(fā)包n第一步,在PC 上編譯并安裝libminiguin第二步,在PC
13、 上安裝MiniGUI 的資源n第三步,編譯應(yīng)用程序例子LOREM IPSUM DOLORn(3)Redhat上MiniGUI 的運(yùn)行n由于必須要在控制臺模式才能運(yùn)行MiniGUI。要啟動控制臺,按住CtrlAlt 的同時,n按F1F6 中的任意一個均可,然后登錄系統(tǒng),進(jìn)入sample 目錄,直接運(yùn)行即可。LOREM IPSUM DOLORn2. 交叉編譯,并在嵌入式目標(biāo)機(jī)上運(yùn)行MiniGUIn(1) 交叉編譯libminiguin(2) 安裝MiniGUI 資源文件n(3) 編譯應(yīng)用程序例子n(4) 在嵌入式目標(biāo)機(jī)上運(yùn)行MiniGUI13.4.3 MiniGUI應(yīng)用編程庫nMiniGUI在嵌
14、入式產(chǎn)品中移植好后,就要進(jìn)行相應(yīng)的產(chǎn)品應(yīng)用程序的開發(fā)。應(yīng)用程序開發(fā)人員可以直接調(diào)用MiniGUI的窗口以及圖形接口編寫自己的應(yīng)用程序,也可以利用MiniGUI 內(nèi)建的各種控件(control/widget)來快速開發(fā)自己的應(yīng)用程序。MiniGUI 提供了各種豐富的控件,如按鈕,工具欄等。同時還為開發(fā)者提供了自定義控件的接口,并能方便地對已有控件進(jìn)行擴(kuò)展。13.5 Qt/Embeddedn13.5.1 Qt/Embedded的應(yīng)用架構(gòu)nQt/Embedded簡稱為Qt/E ,是著名的QT開發(fā)商Trolltech推出的面向嵌入式系統(tǒng)領(lǐng)域的QT開發(fā)包,是一組用于訪問嵌入式設(shè)備的 Qt C+ API函
15、數(shù)庫。它以原始桌面Qt為基礎(chǔ),并做了許多出色的調(diào)整以適用于嵌入式環(huán)境,提供了豐富的窗口小部件(Widgets),并且還支持窗口部件的定制,可為用戶提供漂亮的圖形界面。 13.5 Qt/EmbeddedLOREM IPSUM DOLORnFramebuffer是Linux 2.2.x以上內(nèi)核的版本中的提供的一種圖形驅(qū)動程序接口。這種接口采用內(nèi)存映射(mmap)系統(tǒng)調(diào)用,將顯示設(shè)備抽象為幀緩沖區(qū)。用戶可以將它看成是顯示內(nèi)存的一個映象,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫操作了,而寫操作可以立即反映在屏幕上。Framebuffer驅(qū)動程序是最重要的驅(qū)動程序之一,正是這個驅(qū)動程序才能使系統(tǒng)屏
16、幕顯示內(nèi)容。 13.5.2 QVFB虛擬運(yùn)行環(huán)境nQVFB是“Qt/Embedded Virtual Framebuffer”的簡稱,即Qt/E的虛擬幀緩沖,是在桌面Linux中為嵌入式圖形應(yīng)用程序提供一個虛擬的運(yùn)行環(huán)境。它實際上就是由一個X11的應(yīng)用程序在共享的內(nèi)存去也中來模擬了一個緩沖幀,通過指定顯示設(shè)備的寬度,高度和顏色深度,虛擬出來的緩沖幀將和物理的嵌入式顯示設(shè)備在每個像素上保持一致。 LOREM IPSUM DOLORn使用QVFB的方法如下:n 將Qt/E源代碼中的qvfb目錄作為正常的x86 PC平臺的Qt/X11應(yīng)用程序來編譯,而不要做為Qt/E的應(yīng)用程序來編譯。 n 這時就可
17、以運(yùn)行一些已經(jīng)編譯后的二進(jìn)制Qt/E應(yīng)用程序,命令行中要用參數(shù)-qws表示將它作為Qt/E服務(wù)器。13.6 Qt開發(fā)及運(yùn)行環(huán)境的創(chuàng)建n13.6.1 Qt/E應(yīng)用程序在PC虛擬平臺上的運(yùn)行n1、 Qt/E應(yīng)用程序在PC虛擬平臺上的運(yùn)行n首先,下載Qt開發(fā)環(huán)境的源程序包。 n2 、Qt/E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行 n要將寫好的Qt/E應(yīng)用程序移植到嵌入式設(shè)備上運(yùn)行,需要對Qt/Embedded采用交叉編譯的方式重新進(jìn)行編譯,生成一些適合于嵌入式Linux的函數(shù)庫。 LOREM IPSUM DOLORn3、 Qtopia窗口系統(tǒng)在PC虛擬平臺上的運(yùn)行 n要在PC平臺上建立起Qtopia 窗口系統(tǒng)
18、的虛擬運(yùn)行環(huán)境,除了同前面一樣要編譯Build Qt/X11、Build Qvfb(QTEDIR/tools/qvfb)和Build libqte外,就另外還需要編譯Qtopia這個GUI系統(tǒng) 。LOREM IPSUM DOLORn4、 Qtopia窗口系統(tǒng)在嵌入式設(shè)備中的運(yùn)行 n實際上就是將Qtopia窗口系統(tǒng)移植到嵌入式設(shè)備中的運(yùn)行,其前面幾個步驟同“Qt/E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行”,只是最后將需要拷貝到開發(fā)板上的文件整理到一個單獨(dú)的文件夾里面,然后再下載燒錄到嵌入式設(shè)備的FLASH中。13.6.2 Qt/E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行n要將寫好的Qt/E應(yīng)用程序移植到嵌入式設(shè)備上運(yùn)
19、行,需要對Qt/Embedded采用交叉編譯的方式重新進(jìn)行編譯,生成一些適合于嵌入式Linux的函數(shù)庫。移植過程中都是采取宿主機(jī)和目標(biāo)機(jī)的開發(fā)模式。宿主機(jī)是一臺運(yùn)行Redhat Linux 的PC 機(jī),目標(biāo)機(jī)是基于S3C2410的嵌入式設(shè)備。 LOREM IPSUM DOLORn先在宿主機(jī)上調(diào)試通過后,再移植到目標(biāo)機(jī)上。詳細(xì)步驟如下: n(1)Build Qt/Embeddedn(2)修改tmake 配置文件n(3)生成可執(zhí)行文件13.6.3 Qtopia窗口系統(tǒng)在PC虛擬平臺上的運(yùn)行n要在PC平臺上建立起Qtopia 窗口系統(tǒng)的虛擬運(yùn)行環(huán)境,除了同前面一樣要編譯Build Qt/X11、Bu
20、ild Qvfb(QTEDIR/tools/qvfb)和Build libqte外,就另外還需要編譯Qtopia這個GUI系統(tǒng),13.6.4 Qtopia窗口系統(tǒng)在嵌入式設(shè)備中的運(yùn)行n實際上就是將Qtopia窗口系統(tǒng)移植到嵌入式設(shè)備中的運(yùn)行,其前面幾個步驟同“Qt/E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行”,只是最后將需要拷貝到開發(fā)板上的文件整理到一個單獨(dú)的文件夾里面,然后再下載燒錄到嵌入式設(shè)備的FLASH中。13.7 Qt應(yīng)用程序的開發(fā)n13.7.1 Qt/E基本控件1.窗體交互界面。Qt 擁有豐富的滿足不同需求的窗體,使用起來很靈活,而且它容易被子類化,以滿足不同的需求。窗口部件是用戶界面的一個原子
21、:它從窗口系統(tǒng)接收鼠標(biāo)、鍵盤和其它事件,并且在屏幕上繪制自己的表現(xiàn)。每一個窗口部件都是矩形,并且它們按Z軸順序排列的。一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。13.7.1 Qt/E基本控件n2、對話框n使用可視化Qt 圖形設(shè)計器設(shè)計工具用戶可以建立自己的對話框。Qt使用布局管理自動設(shè)置窗體和別的窗體之間相對的 尺寸和位置,這樣可以確保對話框能夠最好的利用屏幕上的可用空間。nQt提供很多常用的對話框,例如,選擇文件等。 13.7.2開發(fā)工具Qt designer介紹nQt 圖形設(shè)計器是一個具有可視化用戶接口的設(shè)計工具。Qt的應(yīng)用程序可以完全用純命令行下的代碼編寫,也可Qt
22、圖形設(shè)計器這種集成開發(fā)環(huán)境來開發(fā)。 13.7.3 控制臺上的Qt/E應(yīng)用編程n所謂控制臺上的Qt/E應(yīng)用程序,就是指利用Qt/E庫函數(shù)設(shè)計的圖形化應(yīng)用程序,直接在Linux的控制臺下啟動運(yùn)行,而不是在GUI桌面系統(tǒng)中運(yùn)行。這里的控制臺可以目標(biāo)機(jī)的嵌入式Linux,也是宿主機(jī)的桌面Linux,只是后者要先運(yùn)行qvfb。 LOREM IPSUM DOLORn1.一個典型的Qt應(yīng)用程序分析n/hello.cpp精簡的源程序n1 #include n2 #include n3 int main(int argc, char *argv)n4 n5 QApplication app (argc, argv);n6 QLabel *hello = new QLabel(Hello Qt/Embedded!, 0);n7 app.setMainWidget(hello);n8 hello-show();n9 return app.exec();n10 LOREM IPSUM DOLORn第1 行和第2 行包含了兩個頭文件,這兩個頭文件中包含了QAppl
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)急指揮室管理制度
- 形體訓(xùn)練室管理制度
- 往來款日常管理制度
- 德州市接待管理制度
- 必勝客員工管理制度
- 快遞收發(fā)點(diǎn)管理制度
- 總公司全套管理制度
- 總監(jiān)辦工程管理制度
- 成品倉規(guī)章管理制度
- 房屋整修后管理制度
- 車站值班員(中級)鐵路職業(yè)技能鑒定考試題及答案
- 山東省威海市2023-2024學(xué)年高二下學(xué)期期末考試英語試題(解析版)
- 草晶華工作計劃
- 2023-2024學(xué)年吉安市遂川縣七年級語文(下)期末試卷附答案詳析
- 人工智能訓(xùn)練師(中級數(shù)據(jù)標(biāo)注員)理論考試題庫(含答案)
- 腦干損傷護(hù)理常規(guī)
- 小學(xué)數(shù)學(xué)組教研活動記錄表-評課
- 2024年廣東清遠(yuǎn)連平縣事業(yè)單位招聘工作人員51人公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 2024年西部機(jī)場集團(tuán)榆林機(jī)場公司招聘35人高頻考題難、易錯點(diǎn)模擬試題(共500題)附帶答案詳解
- 銀行智能化方案設(shè)計
- 教師口語智慧樹知到期末考試答案2024年
評論
0/150
提交評論