




已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第13章圖形用戶接口 GUI 定義 圖形用戶接口 GraphicsUserInterface GUI 又叫桌面系統(tǒng) 窗口管理系統(tǒng) 圖形操作環(huán)境 圖形用戶界面等 是操作系統(tǒng)和用戶的人機(jī)接口 GUI極大地方便了非專業(yè)用戶的使用 人們不再需要死記硬背大量的命令 而可以通過窗口 菜單方便地進(jìn)行操作 13 1圖形用戶接口的層次結(jié)構(gòu) 13 1 1圖形基礎(chǔ)設(shè)施 圖形基礎(chǔ)設(shè)施是一種底層的圖形驅(qū)動(dòng)引擎 一般是由操作系統(tǒng)提供 它是用作其他更高一層圖形或者圖形應(yīng)用程序的基本函數(shù)庫 依賴庫 在其之上可以針對(duì)某些特定應(yīng)用需求做進(jìn)一步的封裝 譬如 在對(duì)于只需要單任務(wù)的低端應(yīng)用 可以以API函數(shù)的形式 封裝成靜態(tài)或者動(dòng)態(tài)的高級(jí)圖形函數(shù)庫 而在更多的場合 用戶是需要類似Windows的桌面系統(tǒng) 這樣就要構(gòu)建多任務(wù)GUI窗口管理系統(tǒng) 在Linux環(huán)境下 常見的圖形基礎(chǔ)設(shè)施有SVGALib VGA XWindow Xlib LibGGI和FrameBuffer等 13 1 2高級(jí)圖形函數(shù)庫 高級(jí)圖形函數(shù)庫提供的圖形界面編程接口主要分為兩大類 一類只提供基本的畫點(diǎn)繪線 文本區(qū)域處理等 如SDL standarddrawinglibrary 另一類就是以窗口部件 widget 亦稱為控件 部件等 形式 采用面向?qū)ο蠓绞竭M(jìn)行可視化的編程 可用于嵌入式GUI系統(tǒng) 需要諸如pThread等消息處理函數(shù)庫的支持 和可以運(yùn)行在GUI系統(tǒng)上的應(yīng)用程序的開發(fā) 諸如GTK QT和PEG等 13 1 3GUI窗口管理系統(tǒng) GUI窗口管理系統(tǒng)是一個(gè)非常復(fù)雜的系統(tǒng) 很多時(shí)候甚至就類似于一個(gè)操作系統(tǒng) 它是嵌入式系統(tǒng)設(shè)計(jì)中迄今為止沒有很好解決的難點(diǎn)之一 目前 在桌面GUI系統(tǒng)領(lǐng)域主要有X Windows KDE GNOME等 在嵌入式系統(tǒng)領(lǐng)域 主要有MiniGUI Nano X Microwindows OpenGUI和Qpe QtPalmtopEnvironment 等 13 2桌面Linux系統(tǒng)中GUI KDE KoolDesktopEnvironment 與GNOME GNUNetworkObjectEnvironment 是目前桌面Linux UNIX系統(tǒng)中最常用的桌面GUI窗口系統(tǒng) MiniGUI Qt E和Nano X則是嵌入式系統(tǒng)中廣泛應(yīng)用的嵌入式GUI系統(tǒng) 13 2 1KDE KDE是1996年德國MatthiasEttrich發(fā)起了符合GPL規(guī)范的開源項(xiàng)目 與之前各種基于XWindow的圖形用戶環(huán)境不同的是 KDE并非針對(duì)系統(tǒng)管理員等高級(jí)用戶 而是鎖定為普通的終端用戶 即希望KDE能夠包含用戶日常應(yīng)用所需要的所有應(yīng)用程序組件 例如Web瀏覽器 電子郵件客戶端 辦公套件 圖形圖像處理軟件等 13 2 2GNOME GNOME是1997年墨西哥年僅26歲的程序員MiguelDeIcaza發(fā)起的開源項(xiàng)目 目前諸如RedHat Fedora SuseLinux發(fā)行版都默認(rèn)使用它 它功能上的特性和KDE類似 并且相對(duì)要輕便些 13 3嵌入式Linux系統(tǒng)GUI 在現(xiàn)代的嵌入式人機(jī)系統(tǒng)中 人是用戶和主動(dòng)的參與者 能與機(jī)器對(duì)話 要求機(jī)器對(duì)人的各種動(dòng)作做出響應(yīng) 因此 圖形用戶界面已經(jīng)成為嵌入式應(yīng)用系統(tǒng)研制中的重點(diǎn)之一 典型的嵌入式GUI系統(tǒng)有緊縮的XWindow系統(tǒng) MiniGUI Nano X MicroWindows TinyX 緊縮版的X Windows OpenGUI QT Embedded等 13 3 1MiniGUI MiniGUI是1998年底推出的一款面向嵌入式系統(tǒng)或者實(shí)時(shí)系統(tǒng)的GUI系統(tǒng) 是國內(nèi)最早出現(xiàn)的 在國際上有一定知名度的幾個(gè)自由軟件項(xiàng)目之一 最先是由原清華大學(xué)教師魏永明先生主持開發(fā) 現(xiàn)由北京飛漫軟件技術(shù)有限公司進(jìn)行商業(yè)化維護(hù)和運(yùn)作 自1999年初以遵循GPL協(xié)議發(fā)布第一個(gè)版本以來 MiniGUI已廣泛應(yīng)用于手持信息終端 機(jī)頂盒 工業(yè)控制系統(tǒng)及工業(yè)儀表 便攜式多媒體播放機(jī) 查詢終端等產(chǎn)品和領(lǐng)域 13 3 2Qtopia Qtopia是嵌入式GUI窗口系統(tǒng) 也叫做嵌入式Linux的桌面系統(tǒng) 是Trolltech面向嵌入式設(shè)備的Qt掌上機(jī)環(huán)境 QtPalmtopEnvironment Qpe 它建立在Qt Embedded 即Qt E 之上 基于Qt E開發(fā)出來的程序就可以放到這個(gè)桌面上 為開發(fā)提供了一個(gè)類似于Windows這樣易于使用的界面 Qtopia分為開源的PDA版本Qtopia和收費(fèi)的手機(jī)版Qtopia 前者提供PDA的桌面系統(tǒng)基本源代碼 后者還包括手機(jī)模塊代碼等 13 3 3Nano X Nano X的前身就是CenturySoftware推出的開源項(xiàng)目Microwindows 它主要采用C語言進(jìn)行開發(fā) 采用C S體系結(jié)構(gòu) 提供了相對(duì)完善的圖形功能 并且具有分層設(shè)計(jì) 最底層是屏幕和輸入設(shè)備驅(qū)動(dòng)程序 關(guān)于鍵盤或鼠標(biāo) 來與實(shí)際硬件交互 在中間層 可移植的圖形引擎提供對(duì)線的繪制 區(qū)域的填充 多邊形 裁剪以及顏色模型的支持 13 4MiniGUI的開發(fā)初步 MiniGUI具有良好的軟件架構(gòu) 通過抽象層將MiniGUI上層和底層操作系統(tǒng)隔離開來 如圖13 4 1所示 基于MiniGUI的應(yīng)用程序一般通過ANSIC庫 操作系統(tǒng)和驅(qū)動(dòng)程序接口以及MiniGUI自身提供的API來實(shí)現(xiàn)自己的功能 MiniGUI中的 可移植層 可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來 而上層應(yīng)用程序則無需關(guān)心底層的硬件平臺(tái)輸出和輸入設(shè)備 13 4MiniGUI的開發(fā)初步 13 4 1MiniGUI的開發(fā)環(huán)境 MiniGUI的開發(fā)可以在Linux或Windows操作系統(tǒng)下進(jìn)行 由于MiniGUI完全用C來編寫 具有非常好的移植性 也使得MiniGUI應(yīng)用程序的交叉編譯工作十分方便 一般而言 為嵌入式設(shè)備編寫的應(yīng)用程序可以在任何安裝在針對(duì)該設(shè)備的交叉編譯工具鏈的平臺(tái)上進(jìn)行編譯 比如在桌面Linux環(huán)境下安裝針對(duì)ARMCPU平臺(tái)交叉編譯器 arm linux gcc等 然后再對(duì)應(yīng)用程序進(jìn)行交叉編譯 這里給出windows下面編譯minigui的步驟 wvfb 首先要從網(wǎng)上下載MinGuiForWin32開發(fā)包的源代碼 minigui dev 1 6 9 win32 tar tar 解壓后 把dll文件夾下的minigui libpthreadVC1 lib拷貝到helloworld文件夾下 以便程序能夠在當(dāng)前目錄下找到DLL文件 然后進(jìn)入helloworld文件夾找到helloworld dsw 用vc 打開 然后在工程菜單內(nèi) 設(shè)置 選擇C C 分類中選擇預(yù)處理在包含路徑中填入 include include minigui include pthread win32 在LINKE目錄下選擇general 然后把LIB里的庫文件加在對(duì)象 庫模塊的后面 也就是那兩個(gè)minigui libpthreadVC1 lib 最后在分類中選擇INPUT把庫文件地址連接進(jìn)去也就是 LIB 打開wvfb文件夾下的wvfb exe 然后在vc 中執(zhí)行helloworld 這里要注意的是 MiniGUIforWin32是預(yù)編譯的函數(shù)庫 因此 其中的功能特性是固定的 包括編譯時(shí)選項(xiàng)和運(yùn)行時(shí)選項(xiàng) 13 4 2MiniGUI的移植 1 PC機(jī)上配置 編譯 安裝 運(yùn)行MiniGUI 1 在redhat9 0上配置FrameBuffer要激活VESAFrameBuffer驅(qū)動(dòng)程序 需要修改 boot grub menu lst文件 并在kernel打頭的一行添加vga 0 x0317 其中RedHatLinux 2 4 20 8 FrameBuffer 就是設(shè)置了VESAFrameBuffer的引導(dǎo)選項(xiàng) 2 在PC上編譯并安裝MiniGUI開發(fā)包第一步 在PC上編譯并安裝libminigui第二步 在PC上安裝MiniGUI的資源第三步 編譯應(yīng)用程序例子 3 Redhat上MiniGUI的運(yùn)行由于必須要在控制臺(tái)模式才能運(yùn)行MiniGUI 要啟動(dòng)控制臺(tái) 按住Ctrl Alt的同時(shí) 按F1 F6中的任意一個(gè)均可 然后登錄系統(tǒng) 進(jìn)入sample目錄 直接運(yùn)行即可 2 交叉編譯 并在嵌入式目標(biāo)機(jī)上運(yùn)行MiniGUI 1 交叉編譯libminigui 2 安裝MiniGUI資源文件 3 編譯應(yīng)用程序例子 4 在嵌入式目標(biāo)機(jī)上運(yùn)行MiniGUI 13 4 3MiniGUI應(yīng)用編程庫 MiniGUI在嵌入式產(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提供了各種豐富的控件 如按鈕 工具欄等 同時(shí)還為開發(fā)者提供了自定義控件的接口 并能方便地對(duì)已有控件進(jìn)行擴(kuò)展 13 5Qt Embedded 13 5 1Qt Embedded的應(yīng)用架構(gòu)Qt Embedded簡稱為Qt E 是著名的QT開發(fā)商Trolltech推出的面向嵌入式系統(tǒng)領(lǐng)域的QT開發(fā)包 是一組用于訪問嵌入式設(shè)備的QtC API函數(shù)庫 它以原始桌面Qt為基礎(chǔ) 并做了許多出色的調(diào)整以適用于嵌入式環(huán)境 提供了豐富的窗口小部件 Widgets 并且還支持窗口部件的定制 可為用戶提供漂亮的圖形界面 13 5Qt Embedded Framebuffer是Linux2 2 x以上內(nèi)核的版本中的提供的一種圖形驅(qū)動(dòng)程序接口 這種接口采用內(nèi)存映射 mmap 系統(tǒng)調(diào)用 將顯示設(shè)備抽象為幀緩沖區(qū) 用戶可以將它看成是顯示內(nèi)存的一個(gè)映象 將其映射到進(jìn)程地址空間之后 就可以直接進(jìn)行讀寫操作了 而寫操作可以立即反映在屏幕上 Framebuffer驅(qū)動(dòng)程序是最重要的驅(qū)動(dòng)程序之一 正是這個(gè)驅(qū)動(dòng)程序才能使系統(tǒng)屏幕顯示內(nèi)容 13 5 2QVFB虛擬運(yùn)行環(huán)境 QVFB是 Qt EmbeddedVirtualFramebuffer 的簡稱 即Qt E的虛擬幀緩沖 是在桌面Linux中為嵌入式圖形應(yīng)用程序提供一個(gè)虛擬的運(yùn)行環(huán)境 它實(shí)際上就是由一個(gè)X11的應(yīng)用程序在共享的內(nèi)存去也中來模擬了一個(gè)緩沖幀 通過指定顯示設(shè)備的寬度 高度和顏色深度 虛擬出來的緩沖幀將和物理的嵌入式顯示設(shè)備在每個(gè)像素上保持一致 使用QVFB的方法如下 將Qt E源代碼中的qvfb目錄作為正常的x86PC平臺(tái)的Qt X11應(yīng)用程序來編譯 而不要做為Qt E的應(yīng)用程序來編譯 這時(shí)就可以運(yùn)行一些已經(jīng)編譯后的二進(jìn)制Qt E應(yīng)用程序 命令行中要用參數(shù) qws表示將它作為Qt E服務(wù)器 13 6Qt開發(fā)及運(yùn)行環(huán)境的創(chuàng)建 13 6 1Qt E應(yīng)用程序在PC虛擬平臺(tái)上的運(yùn)行1 Qt E應(yīng)用程序在PC虛擬平臺(tái)上的運(yùn)行首先 下載Qt開發(fā)環(huán)境的源程序包 2 Qt E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行要將寫好的Qt E應(yīng)用程序移植到嵌入式設(shè)備上運(yùn)行 需要對(duì)Qt Embedded采用交叉編譯的方式重新進(jìn)行編譯 生成一些適合于嵌入式Linux的函數(shù)庫 3 Qtopia窗口系統(tǒng)在PC虛擬平臺(tái)上的運(yùn)行要在PC平臺(tái)上建立起Qtopia窗口系統(tǒng)的虛擬運(yùn)行環(huán)境 除了同前面一樣要編譯BuildQt X11 BuildQvfb QTEDIR tools qvfb 和Buildlibqte外 就另外還需要編譯Qtopia這個(gè)GUI系統(tǒng) 4 Qtopia窗口系統(tǒng)在嵌入式設(shè)備中的運(yùn)行實(shí)際上就是將Qtopia窗口系統(tǒng)移植到嵌入式設(shè)備中的運(yùn)行 其前面幾個(gè)步驟同 Qt E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行 只是最后將需要拷貝到開發(fā)板上的文件整理到一個(gè)單獨(dú)的文件夾里面 然后再下載燒錄到嵌入式設(shè)備的FLASH中 13 6 2Qt E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行 要將寫好的Qt E應(yīng)用程序移植到嵌入式設(shè)備上運(yùn)行 需要對(duì)Qt Embedded采用交叉編譯的方式重新進(jìn)行編譯 生成一些適合于嵌入式Linux的函數(shù)庫 移植過程中都是采取宿主機(jī)和目標(biāo)機(jī)的開發(fā)模式 宿主機(jī)是一臺(tái)運(yùn)行RedhatLinux的PC機(jī) 目標(biāo)機(jī)是基于S3C2410的嵌入式設(shè)備 先在宿主機(jī)上調(diào)試通過后 再移植到目標(biāo)機(jī)上 詳細(xì)步驟如下 1 BuildQt Embedded 2 修改tmake配置文件 3 生成可執(zhí)行文件 13 6 3Qtopia窗口系統(tǒng)在PC虛擬平臺(tái)上的運(yùn)行 要在PC平臺(tái)上建立起Qtopia窗口系統(tǒng)的虛擬運(yùn)行環(huán)境 除了同前面一樣要編譯BuildQt X11 BuildQvfb QTEDIR tools qvfb 和Buildlibqte外 就另外還需要編譯Qtopia這個(gè)GUI系統(tǒng) 13 6 4Qtopia窗口系統(tǒng)在嵌入式設(shè)備中的運(yùn)行 實(shí)際上就是將Qtopia窗口系統(tǒng)移植到嵌入式設(shè)備中的運(yùn)行 其前面幾個(gè)步驟同 Qt E應(yīng)用程序在嵌入式設(shè)備中的運(yùn)行 只是最后將需要拷貝到開發(fā)板上的文件整理到一個(gè)單獨(dú)的文件夾里面 然后再下載燒錄到嵌入式設(shè)備的FLASH中 13 7Qt應(yīng)用程序的開發(fā) 13 7 1Qt E基本控件1 窗體交互界面 Qt擁有豐富的滿足不同需求的窗體 使用起來很靈活 而且它容易被子類化 以滿足不同的需求 窗口部件是用戶界面的一個(gè)原子 它從窗口系統(tǒng)接收鼠標(biāo) 鍵盤和其它事件 并且在屏幕上繪制自己的表現(xiàn) 每一個(gè)窗口部件都是矩形 并且它們按Z軸順序排列的 一個(gè)窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分 13 7 1Qt E基本控件 2 對(duì)話框使用可視化Qt圖形設(shè)計(jì)器設(shè)計(jì)工具用戶可以建立自己的對(duì)話框 Qt使用布局管理自動(dòng)設(shè)置窗體和別的窗體之間相對(duì)的尺寸和位置 這樣可以確保對(duì)話框能夠最好的利用屏幕上的可用空間 Qt提供很多常用的對(duì)話框 例如 選擇文件等 13 7 2開發(fā)工具Qtdesigner介紹 Qt圖形設(shè)計(jì)器是一個(gè)具有可視化用戶接口的設(shè)計(jì)工具 Qt的應(yīng)用程序可以完全用純命令行下的代碼編寫 也可Qt圖形設(shè)計(jì)器這種集成開發(fā)環(huán)境來開發(fā) 13 7 3控制臺(tái)上的Qt E應(yīng)用編程 所謂控制臺(tái)上的Qt E應(yīng)用程序 就是指利用Qt E庫函數(shù)設(shè)計(jì)的圖形化應(yīng)用程序 直接在Linux的控制臺(tái)下啟動(dòng)運(yùn)行 而不是在GUI桌面系統(tǒng)中運(yùn)行 這里的控制臺(tái)可以目標(biāo)機(jī)的嵌入式Linux 也是宿主機(jī)的桌面Linux 只是后者要先運(yùn)行qvfb 1 一個(gè)典型的Qt應(yīng)用程序分析 hello cpp精簡的源程序1 include2 include3intmain intargc char argv 4 5QApplicationapp argc argv 6QLabel hello newQLabel HelloQt Embedded 0 7app setMainWidget hello 8hello show 9returnapp exec 10 第1行和第2行包含了兩個(gè)頭文件 這兩個(gè)頭文件中包含了QAppli
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年福建莆田市仙游縣九仙溪水電開發(fā)有限公司招聘筆試參考題庫含答案解析
- 安全教育教學(xué)課件下載
- 安全攻防培訓(xùn)課件視頻
- 安全應(yīng)急知識(shí)班隊(duì)會(huì)課件
- 河南省名校2023-2024學(xué)年高三上學(xué)期開學(xué)檢測語文 含解析
- 影視布景制作員課件
- 唇部設(shè)計(jì)說明模板
- 安全健康課件
- 執(zhí)業(yè)藥師考試學(xué)習(xí)方法試題及答案
- 行政法學(xué)教學(xué)探討試題與答案
- 關(guān)于菜鳥驛站轉(zhuǎn)讓合同范本
- DL-T1342-2014電氣接地工程用材料及連接件
- 學(xué)校體育工作條例
- 施工現(xiàn)場視頻監(jiān)控系統(tǒng)施工方案
- 公安情報(bào)學(xué)試卷附有答案
- 2024年貴州省貴陽市南明區(qū)中考一模考試物理試題
- 電梯維護(hù)保養(yǎng)規(guī)則(TSG T5002-2017)
- 水準(zhǔn)測量記錄表自動(dòng)計(jì)算(轉(zhuǎn)點(diǎn))
- 信息化時(shí)代背景下小學(xué)體育與健康課程改革研究 論文
- 量化考研-2024中國大學(xué)生考研白皮書-新東方
- 潛在失效模式及后果分析(FMEA)作業(yè)規(guī)范全套
評(píng)論
0/150
提交評(píng)論