




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
重點內容:嵌入式GUI組成QT/Embedded關鍵技術信號與插槽機制QT/Embedded程序設計第十一章嵌入式Linux圖形設計圖形用戶界面(GraphicalUserInterface,簡稱GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶介面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。在嵌入式系統中,GUI的地位也越來越重要,但是不同于桌面機系統,嵌入式GUI要求簡單、直觀、可靠、占用資源小且反應快速,以適應系統硬件資源有限的條件。另外,由于嵌入式系統硬件本身的特殊性,嵌入式GUI應具備高度可移植性與可裁減性,以適應不同的硬件條件和使用需求。總體來講,嵌入式GUI具備以下特點:●體積小;● 運行時耗用系統資源小;● 上層接口與硬件無關,高度可移植;● 高可靠性;● 在某些應用場合應具備實時性。一、嵌入式GUI組成嵌入式GUI組成和PC機上一般的應用程序的GUI相差不大,其主要由桌面、視窗、單一文件界面或者多文件界面、標簽、菜單、功能表、圖標等組成。具體各個組成部分的說明如下:1、桌面(Desktop)桌面是在啟動時顯示,也是界面中最底層,有時也指代包括窗口、文件瀏覽器在內的“桌面環境”。在桌面上由于可以重疊顯示窗口,因此可以實現多任務化。一般的界面中,桌面上放有各種應用程序和數據的圖標,用戶可以依此開始工作。一、嵌入式GUI組成
2、視窗(Window)應用程序為使用數據而在圖形用戶界面中設置的基本單元。應用程序和數據在窗口內實現一體化。在窗口中,用戶可以在窗口中操作應用程序,進行數據的管理、生成和編輯。通常在窗口四周設有菜單、圖標,數據放在中央。在窗口中,根據各種數據和應用程序的內容設有標題欄,一般放在窗口的最上方,并在其中設有最大化、最小化(隱藏窗口,并非消除數據)、前進后退、縮進(僅顯示標題欄)等動作按鈕,可以簡單地對窗口進行操作。一、嵌入式GUI組成3、單一文件界面(SingleDocumentInterface)單一文件界面即一個窗口內只負責管理一份數據。一份數據對應著一個現實窗口。在這種情況下,數據和顯示窗口的數量是一樣的。若要在其他應用程序的窗口使用數據,將相應生成新的窗口。因此窗口數量多,管理復雜。4、多文件界面(MultipleDocumentInterface)多文件界面即在一個窗口之內進行多份數據管理的方式。這種情況下,窗口的管理簡單化,但操作變為雙重管理。多文件界面主要是微軟視窗系統采用。一、嵌入式GUI組成5、標簽(Label)多文件界面的數據管理方式中使用的一種界面,將數據的標題在窗口中并排,通過選擇標簽標題顯示必要的數據,這樣使得接入數據方式變得更為便捷。6、菜單(Menu)將系統可以執行的命令以階層的方式顯示出來的一個界面。重要程度一般是從左到右,越往右重要度越低。一般重視文件的操作、編輯功能,因此放在最左邊,然后往右有各種設置等操作,最右邊往往設有幫助。一般使用鼠標的第一按鈕進行操作。一、嵌入式GUI組成7、即時菜單,又稱功能表(RealTimeMenu)在菜單欄以外地方,通過鼠標的第二按鈕調出的菜單稱為“即時菜單”。根據調出位置的不同,菜單內容即時變化,列出所指示的對象目前可以進行的操作。8、圖標(Icon)圖標是顯示在管理數據的應用程序中的數據,或者顯示應用程序本身。數據管理程序,即在文件夾中用戶數據的管理、進行特定數據管理的程序的情況下,數據通過圖標顯示出來。通常情況下顯示的是數據的內容或者與數據相關聯的應用程序的圖案。一、嵌入式GUI組成9、按鈕(Button)按鈕通常是在菜單中,利用程度高的命令用圖形表示出來,配置在應用程序中。應用程序中的按鈕,通常可以代替菜單。一些使用程度高的命令,不必通過菜單一層層翻動才能調出,極大提高了工作效率。但是,各種用戶使用的命令頻率是不一樣的,因此這種配置一般都是可以由用戶自定義編輯。一、嵌入式GUI組成目前主流的一些GUI:●Qt/Embedded●MiniGUI●MicroWindows●OpenGUI●Tiny-x二、QT/Embedded關鍵技術
1.Qt/Embedded簡介 2.Qt/Embedded架構 3.Qt的開發環境 4.Qt的支撐工具及組件 5.Qt/Embedded對象模型 6.Qt/Embedded常用的類1.Qt/Embedded簡介
Qt是Trolltech公司的一款圖形開發產品,它采用完全的面向對象技術來進行圖形應用程序的設計,給程序開發者建立藝術級的圖形用戶界面提供所需的全部功能,并且允許真正的組件編程。Trolltech公司是挪威的一家公司,該公司在1994年成立,但是在公司成立之前的兩年就開始進行Qt的設計,并且在1995年推出第一個商業版本。自從1996年早些時候,Qt進入商業領域,它已經成為全世界范圍內數千種成功的應用程序的基礎。Qt也是流行的Linux桌面環境KDE的基礎,KDE是所有主要的Linux發行版的一個標準組件。二、QT/Embedded關鍵技術2.Qt/Embedded架構Qt/Embedded通過QtAPI與LinuxI/O設施直接交互,成為嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省內存,因為它不需要一個X服務器或是Xlib庫,它在底層摒棄了Xlib,采用FrameBuffer(幀緩沖)作為底層圖形接口。同時,將外部輸入設備抽象為鍵盤和鼠標輸入事件。Qt/Embedde的應用程序可以直接寫內核緩沖幀,這避免開發者使用繁瑣的Xlib/Server系統。二、QT/Embedded關鍵技術2.Qt/Embedded架構
下面左圖比較了Qt/Embedded與Qt/X11的架構對應關系,其中可以看出Qt/Embedded在架構中完成了Qt/X11、Qt/Xlib和XWindowSever的功能。右圖為Qt/Embedded架構。二、QT/Embedded關鍵技術3.Qt的開發環境Qt/Embedded的開發環境可以取代那些我們熟知的UNIX和Windows開發工具。它提供了幾個跨平臺的工具使得開發變得迅速和方便,尤其是它的圖形設計器。UNIX下的開發者可以在PC機或者工作站使用虛擬緩沖幀,從而可以模仿一個和嵌入式設備的顯示終端大小,像素相同的顯示環境。二、QT/Embedded關鍵技術3.Qt的開發環境如果Qt/Embedded的應用是在UNIX平臺下開發的話,那么它就可以在開發的機器上以一個獨立的控制臺或者虛擬緩沖幀的方式來運行,對于后者來說,其實是有一個X11的應用程序虛擬了一個緩沖幀。通過指定顯示設備的寬度,高度和顏色深度,虛擬出來的緩沖幀將和物理的顯示設備在每個像素上保持一致。這樣每次調試應用時開發人員就不用總是刷新嵌入式設備的FLASH存儲空間,從而加速了應用的編譯、鏈接和運行周期。運行Qt的虛擬緩沖幀工具的方法是在Linux的圖形模式下運行以下命令“qvfb”將打開虛擬緩沖幀工具。二、QT/Embedded關鍵技術4.Qt的支撐工具及組件Qt包含了許多支持嵌入式系統開發的工具,有兩個最實用的工具是Qmake和Qtdesigner(圖形設計器)。二、QT/Embedded關鍵技術Qmake是一個為編譯Qt/Embedded庫和應用而提供的Makefile生成器。它能夠根據一個工程文件(.pro)產生不同平臺下的Makefile文件。Qmake支持跨平臺開發和影子生成(影子生成是指當工程的源代碼共享給網絡上的多臺機器時,每臺機器編譯鏈接這個工程的代碼將在不同的子路徑下完成,這樣就不會覆蓋別人的編譯鏈接生成的文件。Qmake還易于在不同的配置之間切換)。4.Qt的支撐工具及組件Qtdesigner圖形設計器可以使開發者可視化地設計對話框而不需編寫代碼。使用Qt圖形設計器的布局管理可以生成能平滑改變尺寸的對話框。Qmake和Qtdesigner圖形設計器是完全集成在一起的。二、QT/Embedded關鍵技術4.Qt的支撐工具及組件Qt/Embedded以軟件包的形式提供組件,主要有4個軟件包:tmake工具安裝包,Qt/Embedded安裝包,Qt的X11版的安裝包和Qt/Embedded安裝包。●tmake工具包提供了生成Makefile的能力;●Qt/Embedded工具包中包含了絕大部分的類定義及其實現文件;二、QT/Embedded關鍵技術4.Qt的支撐工具及組件●Qt的X11工具包提供了圖形設計器和幀緩沖管理等多個實用軟件;●Qt/Embedded工具包提供了一種可定制的開發環境和用戶界面,從本質上說,它之于Linux猶如UIQ和Series60之于Symbian。二、QT/Embedded關鍵技術5.Qt/Embedded對象模型Qt中的元對象系統是用來處理對象間通訊的信號/槽機制、運行時的類型信息和動態屬性系統。它基于下列三類:● QObject類;● 類聲明中的私有段中的Q_OBJECT宏;● 元對象編譯器(moc)。二、QT/Embedded關鍵技術5.Qt/Embedded對象模型除了提供對象間通訊的信號和槽機制之外,QObject中的元對象代碼實現其它特征:● className()函數在運行的時候以字符串返回類的名稱,不需要C++編譯器中的本地運行類型信息(RTTI)的支持;● inherits()函數返回這個對象是否是一個繼承于QObject繼承樹中一個特定類的類的實例;二、QT/Embedded關鍵技術5.Qt/Embedded對象模型● tr()和trUtf8()兩個函數是用于國際化中的字符串翻譯;● setProperty()和property()兩個函數是用來通過名稱動態設置和獲得對象屬性的;● metaObject()函數返回這個類所關聯的元對象。二、QT/Embedded關鍵技術6.Qt/Embedded常用的類 1)窗體類
2)QWidget類
3)QApplication類二、QT/Embedded關鍵技術6.Qt/Embedded常用的類1)窗體類二、QT/Embedded關鍵技術Qt擁有豐富的滿足不同需求的窗體(按鈕,滾動條等等),Qt的窗體使用起來很靈活,為了滿足特別的要求,它很容易就可以被子類化。窗體是Qwidget類或它子類的實例,客戶自己的窗體類需要從Qwidget它的子類繼承。下圖所示的是窗體類的層次圖。6.Qt/Embedded常用的類1)窗體類二、QT/Embedded關鍵技術一個窗體可以包含任意數量的子窗體,子窗體可以顯示在父窗體的客戶區,一個沒有父窗體的窗體我們稱之為頂級窗體,一個窗體通常有一個邊框和標題欄作為裝飾。Qt并未對一個窗體有什么限制,任何類型的窗體可以是頂級窗體,任何類型的窗體可以是別的窗體的子窗體。6.Qt/Embedded常用的類2)QWidget類二、QT/Embedded關鍵技術
QWidget類是所有用戶界面對象的基類。窗口部件是用戶界面的一個原子:它從窗口系統接收鼠標、鍵盤和其它事件,并且在屏幕上繪制自己的表現。每一個窗口部件都是矩形,并且它們按Z軸順序排列的。下面是一個典型的應用程序設計://#include<qwidget.h>classQ_EXPORTQWidget:publicQObject,publicQPaintDevice{……}6.Qt/Embedded常用的類3)QApplication類二、QT/Embedded關鍵技術QApplication類管理圖形用戶界面應用程序的控制流和主要設置。它包含主事件循環,在其中來自窗口系統和其它資源的所有事件被處理和調度。它也處理應用程序的初始化和結束,并且提供對話管理。它也處理絕大多數系統范圍和應用程序范圍的設置。對于任何一個使用Qt的圖形用戶界面應用程序,都正好存在一個QApplication對象,而不論這個應用程序在同一時間內是不是有0、1、2或更多個窗口。 1.信號的定義 2.插槽定義 3.信號和插槽連接 4.信號發射三、信號與插槽機制1.信號的定義當對象的內部狀態發生改變,信號就被發射,在某些方面對于對象代理或者所有者也許是很有趣的。只有定義了一個信號的類和它的子類才能發射這個信號。
class類名
{ …… signal: //信號定義
…… }信號會由moc自動生成并且一定不要在.cpp文件中實現。它們也不能有任何返回類型(比如void)。三、信號與插槽機制2.插槽定義定義槽時使用關鍵字slots,并且槽具有公有、保護和私有三種屬性。當一個和槽連接的信號被發射的時候,這個槽被調用。槽也是普通的C++函數并且可以像它們一樣被調用,唯一的區別就是槽可以被信號連接。class類名
{ …… publicslots: //公有插槽定義
protectedslots: //保護插槽定義
privateslots: //私有插槽定義
…… }三、信號與插槽機制2.插槽定義三、信號與插槽機制一個槽的訪問權限決定了誰可以和它相連:
●publicslots:包含任何信號都可以相連的槽。
●protectedslots:包含了此類和它的子類的信
號才能連接的槽。
●privateslots:包含了此類本身的信號可以連
接的槽。3.信號和插槽連接三、信號與插槽機制從上面的定義可以看出,信號和插槽都是某一對象的成員,通常情況下一個信號可以和一個或多個插槽相關聯,關聯函數如下: connect(對象1,對象1信號,對象2,插槽)4.信號發射三、信號與插槽機制在Qt中,發射信號使用emit來完成。下面就舉例說明如何在一個類中添加自己的信號和插槽。
classFoo:publicQObject{
Q_OBJECTpublic:Foo();intvalue()const{returnval;}publicslots:voidsetValue(int);signals:voidvalueChanged(int);private:intval;};4.信號發射三、信號與插槽機制voidFoo::setValue(intv){if(v!=val){
val=v;
emitvalueChanged(v);}}voidmain(){
Fooa,b;connect(&a,SIGNAL(valueChanged(int)),&b,
SLOT(setValue(int)));b.setValue(11);//a=undefinedb=11a.setValue(79);//a=79b=79b.value(); ……}4.信號發射三、信號與插槽機制解釋:在類中定義信號使用關鍵字signal,在Foo類中定義了信號valueChanged(int),通過發射該信號告訴外面的世界它的狀態發生了變化在上例中定義了一個公有槽,其它對象(或自身)可以發送信號給這個槽。在槽函數setValue()中,首先判斷是否要修改val成員的值,如果是,則修改val成員的值,然后調用emit來發送valueChanged(v)信號,告訴其它對象,該對象的val成員的值已經發生改變。4.信號發射三、信號與插槽機制解釋:調用a.setValue(79)會使a發射一個valueChanged()信號,b將會在它的setValue()槽中接收這個信號,也就是b.setValue(79)被調用。接下來b會發射同樣的valueChanged()信號,但是因為沒有槽被連接到b的valueChanged()信號,所以信號消失。四、QT/Embedded程序設計Qt/Embedded安裝Qt設計實例--密碼驗證程序1.Qt/Embedded安裝四、QT/Embedded程序設計
這里使用的安裝版本是Qt/Embedded4.3.3。源碼可以從網站上下載。具體地址為:/qt/source/qt-all-opensource-src-4.3.3.tar.gz。
解壓之后就可以開始安裝了。我們可以新建一個目錄用來編譯,比如“build”目錄。具體命令如下:$tarxvfqt-all-opensource-src-4.3.3.tar.gz$mkdirbuild$cdbuild1.Qt/Embedded安裝四、QT/Embedded程序設計具體過程為:1)配置2)編譯3)測試1.Qt/Embedded安裝四、QT/Embedded程序設計1)配置進入build目錄,開始配置安裝文件。在命令行中輸入以下命令:$cdbuild$../qt-all-opensource-src-4.3.3/configure-release-no-qvfb-xplatformqws/linux-arm-g++-embeddedarm-no-stl-plugin-sql-sqlite-no-qt3support-no-nis-no-cups-no-iconv-no-qdbus-no-freetype-depths4,8,16,32-qt-mouse-linuxtp配置過程中有一些確認選項,確認之后,我們就可以使用“gmake”命令編譯安裝了。1.Qt/Embedded安裝四、QT/Embedded程序設計2)編譯在命令行中輸入gmake命令安裝:
$gmake #gmakeinstallqt-all-opensource-src-4.3.3將被安裝到/usr/local/Trolltech/qt- all-opensource-src-4.3.31.Qt/Embedded安裝四、QT/Embedded程序設計3)測試
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告傳媒居間推廣提成協議
- 醫療器械融資存款居間合同
- 2024靈石縣第一職業高級中學工作人員招聘考試及答案
- 2024濟南汶源工商管理學校工作人員招聘考試及答案
- 2024甘德縣紅格爾多吉民族職業高中工作人員招聘考試及答案
- 施工安全防范合同范本
- 工業機器人技術與應用試題庫+參考答案
- 城市綠化工程項目施工合同
- 花卉靜物美術課件
- 耐藥菌感染病人的護理
- 2025年龍江森工集團權屬林業局有限公司招聘筆試參考題庫含答案解析
- 2025生豬購買合同范文
- 醫療器械經營質量管理制度及工作程序-完整版
- (二模)溫州市2025屆高三第二次適應性考試英語試卷(含答案)+聽力音頻+聽力原文
- DeepSeek+AI組合精準賦能教師教學能力進階實戰 課件 (圖片版)
- 行政事業單位固定資產培訓
- 6.1.2化學反應與電能 課件 2024-2025學年高一下學期化學人教版(2019)必修第二冊
- 建筑施工企業安全生產流程
- 外來植物入侵工程施工方案
- 2025屆高考地理專項練習:農業區位因素及其變化(含答案)
- 初中生科學素養與科學探究能力的培養策略研究考核試卷
評論
0/150
提交評論