第13章 圖形用戶接口_第1頁
第13章 圖形用戶接口_第2頁
第13章 圖形用戶接口_第3頁
第13章 圖形用戶接口_第4頁
第13章 圖形用戶接口_第5頁
已閱讀5頁,還剩40頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第13章圖形用戶接口 GUI 定義 圖形用戶接口 GraphicsUserInterface GUI 又叫桌面系統 窗口管理系統 圖形操作環境 圖形用戶界面等 是操作系統和用戶的人機接口 GUI極大地方便了非專業用戶的使用 人們不再需要死記硬背大量的命令 而可以通過窗口 菜單方便地進行操作 13 1圖形用戶接口的層次結構 13 1 1圖形基礎設施 圖形基礎設施是一種底層的圖形驅動引擎 一般是由操作系統提供 它是用作其他更高一層圖形或者圖形應用程序的基本函數庫 依賴庫 在其之上可以針對某些特定應用需求做進一步的封裝 譬如 在對于只需要單任務的低端應用 可以以API函數的形式 封裝成靜態或者動態的高級圖形函數庫 而在更多的場合 用戶是需要類似Windows的桌面系統 這樣就要構建多任務GUI窗口管理系統 在Linux環境下 常見的圖形基礎設施有SVGALib VGA XWindow Xlib LibGGI和FrameBuffer等 13 1 2高級圖形函數庫 高級圖形函數庫提供的圖形界面編程接口主要分為兩大類 一類只提供基本的畫點繪線 文本區域處理等 如SDL standarddrawinglibrary 另一類就是以窗口部件 widget 亦稱為控件 部件等 形式 采用面向對象方式進行可視化的編程 可用于嵌入式GUI系統 需要諸如pThread等消息處理函數庫的支持 和可以運行在GUI系統上的應用程序的開發 諸如GTK QT和PEG等 13 1 3GUI窗口管理系統 GUI窗口管理系統是一個非常復雜的系統 很多時候甚至就類似于一個操作系統 它是嵌入式系統設計中迄今為止沒有很好解決的難點之一 目前 在桌面GUI系統領域主要有X Windows KDE GNOME等 在嵌入式系統領域 主要有MiniGUI Nano X Microwindows OpenGUI和Qpe QtPalmtopEnvironment 等 13 2桌面Linux系統中GUI KDE KoolDesktopEnvironment 與GNOME GNUNetworkObjectEnvironment 是目前桌面Linux UNIX系統中最常用的桌面GUI窗口系統 MiniGUI Qt E和Nano X則是嵌入式系統中廣泛應用的嵌入式GUI系統 13 2 1KDE KDE是1996年德國MatthiasEttrich發起了符合GPL規范的開源項目 與之前各種基于XWindow的圖形用戶環境不同的是 KDE并非針對系統管理員等高級用戶 而是鎖定為普通的終端用戶 即希望KDE能夠包含用戶日常應用所需要的所有應用程序組件 例如Web瀏覽器 電子郵件客戶端 辦公套件 圖形圖像處理軟件等 13 2 2GNOME GNOME是1997年墨西哥年僅26歲的程序員MiguelDeIcaza發起的開源項目 目前諸如RedHat Fedora SuseLinux發行版都默認使用它 它功能上的特性和KDE類似 并且相對要輕便些 13 3嵌入式Linux系統GUI 在現代的嵌入式人機系統中 人是用戶和主動的參與者 能與機器對話 要求機器對人的各種動作做出響應 因此 圖形用戶界面已經成為嵌入式應用系統研制中的重點之一 典型的嵌入式GUI系統有緊縮的XWindow系統 MiniGUI Nano X MicroWindows TinyX 緊縮版的X Windows OpenGUI QT Embedded等 13 3 1MiniGUI MiniGUI是1998年底推出的一款面向嵌入式系統或者實時系統的GUI系統 是國內最早出現的 在國際上有一定知名度的幾個自由軟件項目之一 最先是由原清華大學教師魏永明先生主持開發 現由北京飛漫軟件技術有限公司進行商業化維護和運作 自1999年初以遵循GPL協議發布第一個版本以來 MiniGUI已廣泛應用于手持信息終端 機頂盒 工業控制系統及工業儀表 便攜式多媒體播放機 查詢終端等產品和領域 13 3 2Qtopia Qtopia是嵌入式GUI窗口系統 也叫做嵌入式Linux的桌面系統 是Trolltech面向嵌入式設備的Qt掌上機環境 QtPalmtopEnvironment Qpe 它建立在Qt Embedded 即Qt E 之上 基于Qt E開發出來的程序就可以放到這個桌面上 為開發提供了一個類似于Windows這樣易于使用的界面 Qtopia分為開源的PDA版本Qtopia和收費的手機版Qtopia 前者提供PDA的桌面系統基本源代碼 后者還包括手機模塊代碼等 13 3 3Nano X Nano X的前身就是CenturySoftware推出的開源項目Microwindows 它主要采用C語言進行開發 采用C S體系結構 提供了相對完善的圖形功能 并且具有分層設計 最底層是屏幕和輸入設備驅動程序 關于鍵盤或鼠標 來與實際硬件交互 在中間層 可移植的圖形引擎提供對線的繪制 區域的填充 多邊形 裁剪以及顏色模型的支持 13 4MiniGUI的開發初步 MiniGUI具有良好的軟件架構 通過抽象層將MiniGUI上層和底層操作系統隔離開來 如圖13 4 1所示 基于MiniGUI的應用程序一般通過ANSIC庫 操作系統和驅動程序接口以及MiniGUI自身提供的API來實現自己的功能 MiniGUI中的 可移植層 可將特定操作系統及底層硬件的細節隱藏起來 而上層應用程序則無需關心底層的硬件平臺輸出和輸入設備 13 4MiniGUI的開發初步 13 4 1MiniGUI的開發環境 MiniGUI的開發可以在Linux或Windows操作系統下進行 由于MiniGUI完全用C來編寫 具有非常好的移植性 也使得MiniGUI應用程序的交叉編譯工作十分方便 一般而言 為嵌入式設備編寫的應用程序可以在任何安裝在針對該設備的交叉編譯工具鏈的平臺上進行編譯 比如在桌面Linux環境下安裝針對ARMCPU平臺交叉編譯器 arm linux gcc等 然后再對應用程序進行交叉編譯 這里給出windows下面編譯minigui的步驟 wvfb 首先要從網上下載MinGuiForWin32開發包的源代碼 minigui dev 1 6 9 win32 tar tar 解壓后 把dll文件夾下的minigui libpthreadVC1 lib拷貝到helloworld文件夾下 以便程序能夠在當前目錄下找到DLL文件 然后進入helloworld文件夾找到helloworld dsw 用vc 打開 然后在工程菜單內 設置 選擇C C 分類中選擇預處理在包含路徑中填入 include include minigui include pthread win32 在LINKE目錄下選擇general 然后把LIB里的庫文件加在對象 庫模塊的后面 也就是那兩個minigui libpthreadVC1 lib 最后在分類中選擇INPUT把庫文件地址連接進去也就是 LIB 打開wvfb文件夾下的wvfb exe 然后在vc 中執行helloworld 這里要注意的是 MiniGUIforWin32是預編譯的函數庫 因此 其中的功能特性是固定的 包括編譯時選項和運行時選項 13 4 2MiniGUI的移植 1 PC機上配置 編譯 安裝 運行MiniGUI 1 在redhat9 0上配置FrameBuffer要激活VESAFrameBuffer驅動程序 需要修改 boot grub menu lst文件 并在kernel打頭的一行添加vga 0 x0317 其中RedHatLinux 2 4 20 8 FrameBuffer 就是設置了VESAFrameBuffer的引導選項 2 在PC上編譯并安裝MiniGUI開發包第一步 在PC上編譯并安裝libminigui第二步 在PC上安裝MiniGUI的資源第三步 編譯應用程序例子 3 Redhat上MiniGUI的運行由于必須要在控制臺模式才能運行MiniGUI 要啟動控制臺 按住Ctrl Alt的同時 按F1 F6中的任意一個均可 然后登錄系統 進入sample目錄 直接運行即可 2 交叉編譯 并在嵌入式目標機上運行MiniGUI 1 交叉編譯libminigui 2 安裝MiniGUI資源文件 3 編譯應用程序例子 4 在嵌入式目標機上運行MiniGUI 13 4 3MiniGUI應用編程庫 MiniGUI在嵌入式產品中移植好后 就要進行相應的產品應用程序的開發 應用程序開發人員可以直接調用MiniGUI的窗口以及圖形接口編寫自己的應用程序 也可以利用MiniGUI內建的各種控件 control widget 來快速開發自己的應用程序 MiniGUI提供了各種豐富的控件 如按鈕 工具欄等 同時還為開發者提供了自定義控件的接口 并能方便地對已有控件進行擴展 13 5Qt Embedded 13 5 1Qt Embedded的應用架構Qt Embedded簡稱為Qt E 是著名的QT開發商Trolltech推出的面向嵌入式系統領域的QT開發包 是一組用于訪問嵌入式設備的QtC API函數庫 它以原始桌面Qt為基礎 并做了許多出色的調整以適用于嵌入式環境 提供了豐富的窗口小部件 Widgets 并且還支持窗口部件的定制 可為用戶提供漂亮的圖形界面 13 5Qt Embedded Framebuffer是Linux2 2 x以上內核的版本中的提供的一種圖形驅動程序接口 這種接口采用內存映射 mmap 系統調用 將顯示設備抽象為幀緩沖區 用戶可以將它看成是顯示內存的一個映象 將其映射到進程地址空間之后 就可以直接進行讀寫操作了 而寫操作可以立即反映在屏幕上 Framebuffer驅動程序是最重要的驅動程序之一 正是這個驅動程序才能使系統屏幕顯示內容 13 5 2QVFB虛擬運行環境 QVFB是 Qt EmbeddedVirtualFramebuffer 的簡稱 即Qt E的虛擬幀緩沖 是在桌面Linux中為嵌入式圖形應用程序提供一個虛擬的運行環境 它實際上就是由一個X11的應用程序在共享的內存去也中來模擬了一個緩沖幀 通過指定顯示設備的寬度 高度和顏色深度 虛擬出來的緩沖幀將和物理的嵌入式顯示設備在每個像素上保持一致 使用QVFB的方法如下 將Qt E源代碼中的qvfb目錄作為正常的x86PC平臺的Qt X11應用程序來編譯 而不要做為Qt E的應用程序來編譯 這時就可以運行一些已經編譯后的二進制Qt E應用程序 命令行中要用參數 qws表示將它作為Qt E服務器 13 6Qt開發及運行環境的創建 13 6 1Qt E應用程序在PC虛擬平臺上的運行1 Qt E應用程序在PC虛擬平臺上的運行首先 下載Qt開發環境的源程序包 2 Qt E應用程序在嵌入式設備中的運行要將寫好的Qt E應用程序移植到嵌入式設備上運行 需要對Qt Embedded采用交叉編譯的方式重新進行編譯 生成一些適合于嵌入式Linux的函數庫 3 Qtopia窗口系統在PC虛擬平臺上的運行要在PC平臺上建立起Qtopia窗口系統的虛擬運行環境 除了同前面一樣要編譯BuildQt X11 BuildQvfb QTEDIR tools qvfb 和Buildlibqte外 就另外還需要編譯Qtopia這個GUI系統 4 Qtopia窗口系統在嵌入式設備中的運行實際上就是將Qtopia窗口系統移植到嵌入式設備中的運行 其前面幾個步驟同 Qt E應用程序在嵌入式設備中的運行 只是最后將需要拷貝到開發板上的文件整理到一個單獨的文件夾里面 然后再下載燒錄到嵌入式設備的FLASH中 13 6 2Qt E應用程序在嵌入式設備中的運行 要將寫好的Qt E應用程序移植到嵌入式設備上運行 需要對Qt Embedded采用交叉編譯的方式重新進行編譯 生成一些適合于嵌入式Linux的函數庫 移植過程中都是采取宿主機和目標機的開發模式 宿主機是一臺運行RedhatLinux的PC機 目標機是基于S3C2410的嵌入式設備 先在宿主機上調試通過后 再移植到目標機上 詳細步驟如下 1 BuildQt Embedded 2 修改tmake配置文件 3 生成可執行文件 13 6 3Qtopia窗口系統在PC虛擬平臺上的運行 要在PC平臺上建立起Qtopia窗口系統的虛擬運行環境 除了同前面一樣要編譯BuildQt X11 BuildQvfb QTEDIR tools qvfb 和Buildlibqte外 就另外還需要編譯Qtopia這個GUI系統 13 6 4Qtopia窗口系統在嵌入式設備中的運行 實際上就是將Qtopia窗口系統移植到嵌入式設備中的運行 其前面幾個步驟同 Qt E應用程序在嵌入式設備中的運行 只是最后將需要拷貝到開發板上的文件整理到一個單獨的文件夾里面 然后再下載燒錄到嵌入式設備的FLASH中 13 7Qt應用程序的開發 13 7 1Qt E基本控件1 窗體交互界面 Qt擁有豐富的滿足不同需求的窗體 使用起來很靈活 而且它容易被子類化 以滿足不同的需求 窗口部件是用戶界面的一個原子 它從窗口系統接收鼠標 鍵盤和其它事件 并且在屏幕上繪制自己的表現 每一個窗口部件都是矩形 并且它們按Z軸順序排列的 一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分 13 7 1Qt E基本控件 2 對話框使用可視化Qt圖形設計器設計工具用戶可以建立自己的對話框 Qt使用布局管理自動設置窗體和別的窗體之間相對的尺寸和位置 這樣可以確保對話框能夠最好的利用屏幕上的可用空間 Qt提供很多常用的對話框 例如 選擇文件等 13 7 2開發工具Qtdesigner介紹 Qt圖形設計器是一個具有可視化用戶接口的設計工具 Qt的應用程序可以完全用純命令行下的代碼編寫 也可Qt圖形設計器這種集成開發環境來開發 13 7 3控制臺上的Qt E應用編程 所謂控制臺上的Qt E應用程序 就是指利用Qt E庫函數設計的圖形化應用程序 直接在Linux的控制臺下啟動運行 而不是在GUI桌面系統中運行 這里的控制臺可以目標機的嵌入式Linux 也是宿主機的桌面Linux 只是后者要先運行qvfb 1 一個典型的Qt應用程序分析 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行包含了兩個頭文件 這兩個頭文件中包含了QAppli

溫馨提示

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

評論

0/150

提交評論