版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
重點內(nèi)容:嵌入式GUI組成QT/Embedded關(guān)鍵技術(shù)信號與插槽機制QT/Embedded程序設(shè)計第十一章嵌入式Linux圖形設(shè)計圖形用戶界面(GraphicalUserInterface,簡稱GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶介面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。在嵌入式系統(tǒng)中,GUI的地位也越來越重要,但是不同于桌面機系統(tǒng),嵌入式GUI要求簡單、直觀、可靠、占用資源小且反應(yīng)快速,以適應(yīng)系統(tǒng)硬件資源有限的條件。另外,由于嵌入式系統(tǒng)硬件本身的特殊性,嵌入式GUI應(yīng)具備高度可移植性與可裁減性,以適應(yīng)不同的硬件條件和使用需求??傮w來講,嵌入式GUI具備以下特點:●體積??;● 運行時耗用系統(tǒng)資源小;● 上層接口與硬件無關(guān),高度可移植;● 高可靠性;● 在某些應(yīng)用場合應(yīng)具備實時性。一、嵌入式GUI組成嵌入式GUI組成和PC機上一般的應(yīng)用程序的GUI相差不大,其主要由桌面、視窗、單一文件界面或者多文件界面、標(biāo)簽、菜單、功能表、圖標(biāo)等組成。具體各個組成部分的說明如下:1、桌面(Desktop)桌面是在啟動時顯示,也是界面中最底層,有時也指代包括窗口、文件瀏覽器在內(nèi)的“桌面環(huán)境”。在桌面上由于可以重疊顯示窗口,因此可以實現(xiàn)多任務(wù)化。一般的界面中,桌面上放有各種應(yīng)用程序和數(shù)據(jù)的圖標(biāo),用戶可以依此開始工作。一、嵌入式GUI組成
2、視窗(Window)應(yīng)用程序為使用數(shù)據(jù)而在圖形用戶界面中設(shè)置的基本單元。應(yīng)用程序和數(shù)據(jù)在窗口內(nèi)實現(xiàn)一體化。在窗口中,用戶可以在窗口中操作應(yīng)用程序,進行數(shù)據(jù)的管理、生成和編輯。通常在窗口四周設(shè)有菜單、圖標(biāo),數(shù)據(jù)放在中央。在窗口中,根據(jù)各種數(shù)據(jù)和應(yīng)用程序的內(nèi)容設(shè)有標(biāo)題欄,一般放在窗口的最上方,并在其中設(shè)有最大化、最小化(隱藏窗口,并非消除數(shù)據(jù))、前進后退、縮進(僅顯示標(biāo)題欄)等動作按鈕,可以簡單地對窗口進行操作。一、嵌入式GUI組成3、單一文件界面(SingleDocumentInterface)單一文件界面即一個窗口內(nèi)只負(fù)責(zé)管理一份數(shù)據(jù)。一份數(shù)據(jù)對應(yīng)著一個現(xiàn)實窗口。在這種情況下,數(shù)據(jù)和顯示窗口的數(shù)量是一樣的。若要在其他應(yīng)用程序的窗口使用數(shù)據(jù),將相應(yīng)生成新的窗口。因此窗口數(shù)量多,管理復(fù)雜。4、多文件界面(MultipleDocumentInterface)多文件界面即在一個窗口之內(nèi)進行多份數(shù)據(jù)管理的方式。這種情況下,窗口的管理簡單化,但操作變?yōu)殡p重管理。多文件界面主要是微軟視窗系統(tǒng)采用。一、嵌入式GUI組成5、標(biāo)簽(Label)多文件界面的數(shù)據(jù)管理方式中使用的一種界面,將數(shù)據(jù)的標(biāo)題在窗口中并排,通過選擇標(biāo)簽標(biāo)題顯示必要的數(shù)據(jù),這樣使得接入數(shù)據(jù)方式變得更為便捷。6、菜單(Menu)將系統(tǒng)可以執(zhí)行的命令以階層的方式顯示出來的一個界面。重要程度一般是從左到右,越往右重要度越低。一般重視文件的操作、編輯功能,因此放在最左邊,然后往右有各種設(shè)置等操作,最右邊往往設(shè)有幫助。一般使用鼠標(biāo)的第一按鈕進行操作。一、嵌入式GUI組成7、即時菜單,又稱功能表(RealTimeMenu)在菜單欄以外地方,通過鼠標(biāo)的第二按鈕調(diào)出的菜單稱為“即時菜單”。根據(jù)調(diào)出位置的不同,菜單內(nèi)容即時變化,列出所指示的對象目前可以進行的操作。8、圖標(biāo)(Icon)圖標(biāo)是顯示在管理數(shù)據(jù)的應(yīng)用程序中的數(shù)據(jù),或者顯示應(yīng)用程序本身。數(shù)據(jù)管理程序,即在文件夾中用戶數(shù)據(jù)的管理、進行特定數(shù)據(jù)管理的程序的情況下,數(shù)據(jù)通過圖標(biāo)顯示出來。通常情況下顯示的是數(shù)據(jù)的內(nèi)容或者與數(shù)據(jù)相關(guān)聯(lián)的應(yīng)用程序的圖案。一、嵌入式GUI組成9、按鈕(Button)按鈕通常是在菜單中,利用程度高的命令用圖形表示出來,配置在應(yīng)用程序中。應(yīng)用程序中的按鈕,通??梢源娌藛巍R恍┦褂贸潭雀叩拿?,不必通過菜單一層層翻動才能調(diào)出,極大提高了工作效率。但是,各種用戶使用的命令頻率是不一樣的,因此這種配置一般都是可以由用戶自定義編輯。一、嵌入式GUI組成目前主流的一些GUI:●Qt/Embedded●MiniGUI●MicroWindows●OpenGUI●Tiny-x二、QT/Embedded關(guān)鍵技術(shù)
1.Qt/Embedded簡介 2.Qt/Embedded架構(gòu) 3.Qt的開發(fā)環(huán)境 4.Qt的支撐工具及組件 5.Qt/Embedded對象模型 6.Qt/Embedded常用的類1.Qt/Embedded簡介
Qt是Trolltech公司的一款圖形開發(fā)產(chǎn)品,它采用完全的面向?qū)ο蠹夹g(shù)來進行圖形應(yīng)用程序的設(shè)計,給程序開發(fā)者建立藝術(shù)級的圖形用戶界面提供所需的全部功能,并且允許真正的組件編程。Trolltech公司是挪威的一家公司,該公司在1994年成立,但是在公司成立之前的兩年就開始進行Qt的設(shè)計,并且在1995年推出第一個商業(yè)版本。自從1996年早些時候,Qt進入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。Qt也是流行的Linux桌面環(huán)境KDE的基礎(chǔ),KDE是所有主要的Linux發(fā)行版的一個標(biāo)準(zhǔn)組件。二、QT/Embedded關(guān)鍵技術(shù)2.Qt/Embedded架構(gòu)Qt/Embedded通過QtAPI與LinuxI/O設(shè)施直接交互,成為嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省內(nèi)存,因為它不需要一個X服務(wù)器或是Xlib庫,它在底層摒棄了Xlib,采用FrameBuffer(幀緩沖)作為底層圖形接口。同時,將外部輸入設(shè)備抽象為鍵盤和鼠標(biāo)輸入事件。Qt/Embedde的應(yīng)用程序可以直接寫內(nèi)核緩沖幀,這避免開發(fā)者使用繁瑣的Xlib/Server系統(tǒng)。二、QT/Embedded關(guān)鍵技術(shù)2.Qt/Embedded架構(gòu)
下面左圖比較了Qt/Embedded與Qt/X11的架構(gòu)對應(yīng)關(guān)系,其中可以看出Qt/Embedded在架構(gòu)中完成了Qt/X11、Qt/Xlib和XWindowSever的功能。右圖為Qt/Embedded架構(gòu)。二、QT/Embedded關(guān)鍵技術(shù)3.Qt的開發(fā)環(huán)境Qt/Embedded的開發(fā)環(huán)境可以取代那些我們熟知的UNIX和Windows開發(fā)工具。它提供了幾個跨平臺的工具使得開發(fā)變得迅速和方便,尤其是它的圖形設(shè)計器。UNIX下的開發(fā)者可以在PC機或者工作站使用虛擬緩沖幀,從而可以模仿一個和嵌入式設(shè)備的顯示終端大小,像素相同的顯示環(huán)境。二、QT/Embedded關(guān)鍵技術(shù)3.Qt的開發(fā)環(huán)境如果Qt/Embedded的應(yīng)用是在UNIX平臺下開發(fā)的話,那么它就可以在開發(fā)的機器上以一個獨立的控制臺或者虛擬緩沖幀的方式來運行,對于后者來說,其實是有一個X11的應(yīng)用程序虛擬了一個緩沖幀。通過指定顯示設(shè)備的寬度,高度和顏色深度,虛擬出來的緩沖幀將和物理的顯示設(shè)備在每個像素上保持一致。這樣每次調(diào)試應(yīng)用時開發(fā)人員就不用總是刷新嵌入式設(shè)備的FLASH存儲空間,從而加速了應(yīng)用的編譯、鏈接和運行周期。運行Qt的虛擬緩沖幀工具的方法是在Linux的圖形模式下運行以下命令“qvfb”將打開虛擬緩沖幀工具。二、QT/Embedded關(guān)鍵技術(shù)4.Qt的支撐工具及組件Qt包含了許多支持嵌入式系統(tǒng)開發(fā)的工具,有兩個最實用的工具是Qmake和Qtdesigner(圖形設(shè)計器)。二、QT/Embedded關(guān)鍵技術(shù)Qmake是一個為編譯Qt/Embedded庫和應(yīng)用而提供的Makefile生成器。它能夠根據(jù)一個工程文件(.pro)產(chǎn)生不同平臺下的Makefile文件。Qmake支持跨平臺開發(fā)和影子生成(影子生成是指當(dāng)工程的源代碼共享給網(wǎng)絡(luò)上的多臺機器時,每臺機器編譯鏈接這個工程的代碼將在不同的子路徑下完成,這樣就不會覆蓋別人的編譯鏈接生成的文件。Qmake還易于在不同的配置之間切換)。4.Qt的支撐工具及組件Qtdesigner圖形設(shè)計器可以使開發(fā)者可視化地設(shè)計對話框而不需編寫代碼。使用Qt圖形設(shè)計器的布局管理可以生成能平滑改變尺寸的對話框。Qmake和Qtdesigner圖形設(shè)計器是完全集成在一起的。二、QT/Embedded關(guān)鍵技術(shù)4.Qt的支撐工具及組件Qt/Embedded以軟件包的形式提供組件,主要有4個軟件包:tmake工具安裝包,Qt/Embedded安裝包,Qt的X11版的安裝包和Qt/Embedded安裝包?!駎make工具包提供了生成Makefile的能力;●Qt/Embedded工具包中包含了絕大部分的類定義及其實現(xiàn)文件;二、QT/Embedded關(guān)鍵技術(shù)4.Qt的支撐工具及組件●Qt的X11工具包提供了圖形設(shè)計器和幀緩沖管理等多個實用軟件;●Qt/Embedded工具包提供了一種可定制的開發(fā)環(huán)境和用戶界面,從本質(zhì)上說,它之于Linux猶如UIQ和Series60之于Symbian。二、QT/Embedded關(guān)鍵技術(shù)5.Qt/Embedded對象模型Qt中的元對象系統(tǒng)是用來處理對象間通訊的信號/槽機制、運行時的類型信息和動態(tài)屬性系統(tǒng)。它基于下列三類:● QObject類;● 類聲明中的私有段中的Q_OBJECT宏;● 元對象編譯器(moc)。二、QT/Embedded關(guān)鍵技術(shù)5.Qt/Embedded對象模型除了提供對象間通訊的信號和槽機制之外,QObject中的元對象代碼實現(xiàn)其它特征:● className()函數(shù)在運行的時候以字符串返回類的名稱,不需要C++編譯器中的本地運行類型信息(RTTI)的支持;● inherits()函數(shù)返回這個對象是否是一個繼承于QObject繼承樹中一個特定類的類的實例;二、QT/Embedded關(guān)鍵技術(shù)5.Qt/Embedded對象模型● tr()和trUtf8()兩個函數(shù)是用于國際化中的字符串翻譯;● setProperty()和property()兩個函數(shù)是用來通過名稱動態(tài)設(shè)置和獲得對象屬性的;● metaObject()函數(shù)返回這個類所關(guān)聯(lián)的元對象。二、QT/Embedded關(guān)鍵技術(shù)6.Qt/Embedded常用的類 1)窗體類
2)QWidget類
3)QApplication類二、QT/Embedded關(guān)鍵技術(shù)6.Qt/Embedded常用的類1)窗體類二、QT/Embedded關(guān)鍵技術(shù)Qt擁有豐富的滿足不同需求的窗體(按鈕,滾動條等等),Qt的窗體使用起來很靈活,為了滿足特別的要求,它很容易就可以被子類化。窗體是Qwidget類或它子類的實例,客戶自己的窗體類需要從Qwidget它的子類繼承。下圖所示的是窗體類的層次圖。6.Qt/Embedded常用的類1)窗體類二、QT/Embedded關(guān)鍵技術(shù)一個窗體可以包含任意數(shù)量的子窗體,子窗體可以顯示在父窗體的客戶區(qū),一個沒有父窗體的窗體我們稱之為頂級窗體,一個窗體通常有一個邊框和標(biāo)題欄作為裝飾。Qt并未對一個窗體有什么限制,任何類型的窗體可以是頂級窗體,任何類型的窗體可以是別的窗體的子窗體。6.Qt/Embedded常用的類2)QWidget類二、QT/Embedded關(guān)鍵技術(shù)
QWidget類是所有用戶界面對象的基類。窗口部件是用戶界面的一個原子:它從窗口系統(tǒng)接收鼠標(biāo)、鍵盤和其它事件,并且在屏幕上繪制自己的表現(xiàn)。每一個窗口部件都是矩形,并且它們按Z軸順序排列的。下面是一個典型的應(yīng)用程序設(shè)計://#include<qwidget.h>classQ_EXPORTQWidget:publicQObject,publicQPaintDevice{……}6.Qt/Embedded常用的類3)QApplication類二、QT/Embedded關(guān)鍵技術(shù)QApplication類管理圖形用戶界面應(yīng)用程序的控制流和主要設(shè)置。它包含主事件循環(huán),在其中來自窗口系統(tǒng)和其它資源的所有事件被處理和調(diào)度。它也處理應(yīng)用程序的初始化和結(jié)束,并且提供對話管理。它也處理絕大多數(shù)系統(tǒng)范圍和應(yīng)用程序范圍的設(shè)置。對于任何一個使用Qt的圖形用戶界面應(yīng)用程序,都正好存在一個QApplication對象,而不論這個應(yīng)用程序在同一時間內(nèi)是不是有0、1、2或更多個窗口。 1.信號的定義 2.插槽定義 3.信號和插槽連接 4.信號發(fā)射三、信號與插槽機制1.信號的定義當(dāng)對象的內(nèi)部狀態(tài)發(fā)生改變,信號就被發(fā)射,在某些方面對于對象代理或者所有者也許是很有趣的。只有定義了一個信號的類和它的子類才能發(fā)射這個信號。
class類名
{ …… signal: //信號定義
…… }信號會由moc自動生成并且一定不要在.cpp文件中實現(xiàn)。它們也不能有任何返回類型(比如void)。三、信號與插槽機制2.插槽定義定義槽時使用關(guān)鍵字slots,并且槽具有公有、保護和私有三種屬性。當(dāng)一個和槽連接的信號被發(fā)射的時候,這個槽被調(diào)用。槽也是普通的C++函數(shù)并且可以像它們一樣被調(diào)用,唯一的區(qū)別就是槽可以被信號連接。class類名
{ …… publicslots: //公有插槽定義
protectedslots: //保護插槽定義
privateslots: //私有插槽定義
…… }三、信號與插槽機制2.插槽定義三、信號與插槽機制一個槽的訪問權(quán)限決定了誰可以和它相連:
●publicslots:包含任何信號都可以相連的槽。
●protectedslots:包含了此類和它的子類的信
號才能連接的槽。
●privateslots:包含了此類本身的信號可以連
接的槽。3.信號和插槽連接三、信號與插槽機制從上面的定義可以看出,信號和插槽都是某一對象的成員,通常情況下一個信號可以和一個或多個插槽相關(guān)聯(lián),關(guān)聯(lián)函數(shù)如下: connect(對象1,對象1信號,對象2,插槽)4.信號發(fā)射三、信號與插槽機制在Qt中,發(fā)射信號使用emit來完成。下面就舉例說明如何在一個類中添加自己的信號和插槽。
classFoo:publicQObject{
Q_OBJECTpublic:Foo();intvalue()const{returnval;}publicslots:voidsetValue(int);signals:voidvalueChanged(int);private:intval;};4.信號發(fā)射三、信號與插槽機制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.信號發(fā)射三、信號與插槽機制解釋:在類中定義信號使用關(guān)鍵字signal,在Foo類中定義了信號valueChanged(int),通過發(fā)射該信號告訴外面的世界它的狀態(tài)發(fā)生了變化在上例中定義了一個公有槽,其它對象(或自身)可以發(fā)送信號給這個槽。在槽函數(shù)setValue()中,首先判斷是否要修改val成員的值,如果是,則修改val成員的值,然后調(diào)用emit來發(fā)送valueChanged(v)信號,告訴其它對象,該對象的val成員的值已經(jīng)發(fā)生改變。4.信號發(fā)射三、信號與插槽機制解釋:調(diào)用a.setValue(79)會使a發(fā)射一個valueChanged()信號,b將會在它的setValue()槽中接收這個信號,也就是b.setValue(79)被調(diào)用。接下來b會發(fā)射同樣的valueChanged()信號,但是因為沒有槽被連接到b的valueChanged()信號,所以信號消失。四、QT/Embedded程序設(shè)計Qt/Embedded安裝Qt設(shè)計實例--密碼驗證程序1.Qt/Embedded安裝四、QT/Embedded程序設(shè)計
這里使用的安裝版本是Qt/Embedded4.3.3。源碼可以從網(wǎng)站上下載。具體地址為:/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程序設(shè)計具體過程為:1)配置2)編譯3)測試1.Qt/Embedded安裝四、QT/Embedded程序設(shè)計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配置過程中有一些確認(rèn)選項,確認(rèn)之后,我們就可以使用“gmake”命令編譯安裝了。1.Qt/Embedded安裝四、QT/Embedded程序設(shè)計2)編譯在命令行中輸入gmake命令安裝:
$gmake #gmakeinstallqt-all-opensource-src-4.3.3將被安裝到/usr/local/Trolltech/qt- all-opensource-src-4.3.31.Qt/Embedded安裝四、QT/Embedded程序設(shè)計3)測試
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化藝術(shù)vi設(shè)計制作合同
- 二零二五年度按揭貸款服務(wù)與資產(chǎn)評估合同3篇
- 二零二五年度投標(biāo)保函擔(dān)保合同范本
- 二零二五年度房屋買賣及貸款擔(dān)保協(xié)議3篇
- 海南職業(yè)技術(shù)學(xué)院《現(xiàn)代信息網(wǎng)絡(luò)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 海南醫(yī)學(xué)院《電子商務(wù)理論與實務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度水利設(shè)施安裝與維護合同3篇
- 2025版防盜門個性化定制加工承攬協(xié)議范本3篇
- 二零二五年度智能家居控制系統(tǒng)開發(fā)委托服務(wù)合同3篇
- 某房地產(chǎn)公司安全管理應(yīng)急預(yù)案范文(2篇)
- 《神經(jīng)發(fā)展障礙 兒童社交溝通障礙康復(fù)規(guī)范》
- 2025年中建六局二級子企業(yè)總經(jīng)理崗位公開招聘高頻重點提升(共500題)附帶答案詳解
- 2025年遼寧省大連市普通高中學(xué)業(yè)水平合格性考試模擬政治試題(一)
- 2024版戶外廣告牌安裝與維護服務(wù)合同2篇
- 云南省昆明市五華區(qū)2023-2024學(xué)年九年級上學(xué)期期末數(shù)學(xué)試卷
- 安徽省合肥市第四十中學(xué)2024~2025學(xué)年九年級上學(xué)期化學(xué)期末模擬試題(含答案)
- 安徽省淮北市(2024年-2025年小學(xué)六年級語文)部編版期末考試((上下)學(xué)期)試卷及答案
- 大學(xué)生職業(yè)生涯規(guī)劃
- 干燥綜合征的護理查房
- 江蘇省徐州市2023-2024學(xué)年六年級上學(xué)期期末科學(xué)試卷(含答案)2
- 五年級數(shù)學(xué)上冊七大重點類型應(yīng)用題
評論
0/150
提交評論