嵌入式系統(tǒng)的圖形用戶(hù)界面.ppt_第1頁(yè)
嵌入式系統(tǒng)的圖形用戶(hù)界面.ppt_第2頁(yè)
嵌入式系統(tǒng)的圖形用戶(hù)界面.ppt_第3頁(yè)
嵌入式系統(tǒng)的圖形用戶(hù)界面.ppt_第4頁(yè)
嵌入式系統(tǒng)的圖形用戶(hù)界面.ppt_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

VIP免費(fèi)下載

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌入式系統(tǒng)的圖形用戶(hù)界面,預(yù)習(xí)檢查,嵌入式平臺(tái)有哪些主流的GUI?QT的特點(diǎn)是哪些?信號(hào)和插槽的概念?,2,本章目標(biāo),熟悉嵌入式平臺(tái)下主流GUI掌握嵌入式QT的組成結(jié)構(gòu)和特點(diǎn)掌握一個(gè)簡(jiǎn)單QT程序掌握布局和按鈕控件,本章結(jié)構(gòu),常見(jiàn)的LinuxGUI工具,XWindows(UNIX/Linux)QtGTKClutterJava(Android)DirectFBMiniGUIMicroWindows/NanoXOpenGL/OpenglES,圖形用戶(hù)界面,QT-C+圖形用戶(hù)界面庫(kù),Qt是一個(gè)跨平臺(tái)的C+圖形用戶(hù)界面應(yīng)用程序框架,由Nokia公司出品。目前產(chǎn)品包括Qt、Qt/Embedded、快速開(kāi)發(fā)工具QtDesigner、國(guó)際化工具QtLinguist等部分。Qt支持Unix,Linux,Windows,WinCE,Symbian平臺(tái)Qt是基于面向?qū)ο蟮腃+語(yǔ)言,它提供了信號(hào)(signal)和槽(slot)的對(duì)象通信機(jī)制,具有可查詢(xún)和可設(shè)計(jì)的屬性,以及強(qiáng)大的事件和事件過(guò)濾器。同時(shí),它還具有字符國(guó)際化,即支持根據(jù)上下文進(jìn)行國(guó)際化字符串翻譯。許多Qt特性基于QObject的繼承,通過(guò)標(biāo)準(zhǔn)C+技術(shù)實(shí)現(xiàn),Qt的本質(zhì)是一些應(yīng)用程序庫(kù),它以動(dòng)態(tài)庫(kù),靜態(tài)庫(kù)和頭文件的形式給出.Qt是跨平臺(tái)庫(kù)支持平臺(tái)包括Linux,MacOS,windows,嵌入式Linux,windowsCE,Symbian,提供C+語(yǔ)言接口.建議先不要使用QtCreator、QDesigner這些集成開(kāi)發(fā)環(huán)境,而應(yīng)該直接學(xué)習(xí)Qt庫(kù)中類(lèi)的使用,以知其所以然.,QT/Embedded簡(jiǎn)介,QT特點(diǎn),優(yōu)良的跨平臺(tái)特性面向?qū)ο驫t的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好豐富的APIQt包括多達(dá)400個(gè)以上的C+類(lèi),同時(shí)不斷擴(kuò)展支持2D/3D圖形渲染,支持OpenGLXML支持開(kāi)放源碼,Qt程序結(jié)構(gòu),/main.cpp#include#includeintmain(intargc,char*argv)/每個(gè)程序都要有一個(gè)QApplication對(duì)象QApplicationapp(argc,argv);QWidgetwin;/創(chuàng)建窗口對(duì)象win.show();/顯示窗口returnapp.exec();/進(jìn)入事件循環(huán)/事件循環(huán)是響應(yīng)鼠標(biāo)輸入、信號(hào)槽的基礎(chǔ),創(chuàng)建工程文件的和可執(zhí)行文件,qmake-project/生成工程文件.proqmake/qmake分析源文件生成Makefilemake/執(zhí)行Makefile編譯,QObject類(lèi),Object類(lèi)是所有Qt對(duì)象的唯一基類(lèi),QObject是對(duì)象模型的中心,這個(gè)模型的中心特征就是一種用于無(wú)縫對(duì)象通訊的被叫做信號(hào)和槽的非常強(qiáng)大的機(jī)制QObject把它們自己組織在對(duì)象樹(shù)中。當(dāng)你創(chuàng)建一個(gè)QObject作為其它對(duì)象的父對(duì)象,這個(gè)對(duì)象會(huì)在父對(duì)象中自動(dòng)調(diào)用insertChild()并且可以在父對(duì)象的children()列表中顯示出來(lái)事件:事件是由窗口系統(tǒng)或qt本身對(duì)各種事務(wù)的反應(yīng)而產(chǎn)生的。當(dāng)用戶(hù)按下、釋放一個(gè)鍵或鼠標(biāo)按鈕,一個(gè)鍵盤(pán)或鼠標(biāo)事件被產(chǎn)生;當(dāng)窗口第一次顯示,一個(gè)繪圖事件產(chǎn)生,從而告知最新的可見(jiàn)窗口需要重繪自身。大多數(shù)事件是由于響應(yīng)用戶(hù)的動(dòng)作而產(chǎn)生的,但還有一些,比如定時(shí)器等,是由系統(tǒng)獨(dú)立產(chǎn)生的。,QApplication類(lèi),QApplication類(lèi)管理圖形用戶(hù)界面應(yīng)用程序的控制流和主要設(shè)置,它包含主事件循環(huán),負(fù)責(zé)處理和調(diào)度所有來(lái)自窗口系統(tǒng)和其他資源的事件,處理應(yīng)用程序的開(kāi)始、結(jié)束以及會(huì)話管理系統(tǒng)和應(yīng)用程序方面的設(shè)置,QWidget類(lèi),QWidget類(lèi)是所有用戶(hù)界面對(duì)象的基類(lèi),它繼承了QObject類(lèi)的屬性。,窗口部件是用戶(hù)界面的一個(gè)原子:它從窗口系統(tǒng)接收鼠標(biāo)、鍵盤(pán)和其它事件,并且在屏幕上繪制自己的表現(xiàn)。每一個(gè)窗口部件都是矩形,并且它們按Z軸順序排列的。一個(gè)窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。QWidget類(lèi)有很多成員函數(shù),但一般不直接使用,而是通過(guò)子類(lèi)繼承來(lái)使用其函數(shù)功能。如,QPushButton、QlistBox等都是它的子類(lèi)一個(gè)沒(méi)有父窗口部件的窗口部件一直是頂級(jí)窗口部件。非頂級(jí)窗口部件是子窗口部件。它們是它們的父窗口部件中的子窗口。你通常不能在視覺(jué)角度從它們的父窗口部件中辨別一個(gè)子窗口部件。,布局,使用Qt的布局管理類(lèi):,這些類(lèi)能夠給出所有類(lèi)型控件的默認(rèn)值,能夠根據(jù)控件的字體,樣式,內(nèi)容得到不同的控件的sizeHint。布局管理類(lèi)能夠得到控件的最大,最小尺寸,在字體,內(nèi)容或者窗口改變時(shí)自動(dòng)調(diào)整布局。QHBoxLayout,QVBoxLayout,QGridLayout是三個(gè)最重要的布局管理器。這些類(lèi)從QLayout繼承,QLayout提供布局最基本的框架。,實(shí)現(xiàn)對(duì)象間通信的技術(shù)用戶(hù)事件:指程序的用戶(hù)所產(chǎn)生的事件,例如:點(diǎn)擊鼠標(biāo)程序事件:指程序所產(chǎn)生的事件,例:當(dāng)用戶(hù)點(diǎn)擊鼠標(biāo)后程序退出發(fā)射信號(hào):“發(fā)出”一個(gè)信號(hào)。例:當(dāng)你點(diǎn)擊鼠標(biāo)時(shí),將發(fā)射(clicked)信號(hào),為了發(fā)射信號(hào),使用emit關(guān)鍵字MOC:元對(duì)象編譯器,用于構(gòu)造用戶(hù)自己的信號(hào)和槽,信號(hào)和插槽機(jī)制,插槽:是標(biāo)準(zhǔn)的成員函數(shù)(作為類(lèi)成員的函數(shù)),但是增加了一些特殊的功能使它們能夠連接到信號(hào),每當(dāng)槽所連接的信號(hào)被發(fā)射時(shí),槽(函數(shù))就被執(zhí)行。信號(hào):一種特殊的成員函數(shù),它們被定義為當(dāng)某個(gè)事件發(fā)生時(shí)就被發(fā)射,之后執(zhí)行所有被連接的槽使用信號(hào)和插槽非常簡(jiǎn)單,只需要編寫(xiě)一行代碼就能夠?qū)⒂脩?hù)事件和程序事件連接起來(lái)connect(sender,SIGNAL(signal),receiver,SLOT(slot);,信號(hào)和插槽機(jī)制,信號(hào)和插槽機(jī)制,在Qt中大多數(shù)類(lèi)都繼承自QObject,繼承自它的類(lèi)都支持信號(hào)與槽機(jī)制。信號(hào)與槽泛泛的說(shuō)就是一種對(duì)象間的通信機(jī)制,一個(gè)對(duì)象發(fā)送信號(hào),會(huì)導(dǎo)致另一個(gè)對(duì)象的槽函數(shù)被調(diào)用,槽函數(shù)是一個(gè)對(duì)象的成員函數(shù)。哪個(gè)對(duì)象的信號(hào)觸發(fā)哪個(gè)對(duì)象的槽函數(shù)需要由connect函數(shù)事先綁定。信號(hào)是一個(gè)沒(méi)有函數(shù)體的成員函數(shù),有點(diǎn)類(lèi)似消息或純虛函數(shù)(但不是純虛函數(shù))。在Qt中信號(hào)與槽都可以由程序員自定義,許多Qt已有的類(lèi)中已經(jīng)定義有信號(hào)與槽。,一個(gè)信號(hào)可以被連接到多個(gè)槽connect(inputBox,SlGNAL(valueChanged(int),staticBox,SLOT(setValue(int);connect(inputBox,SIGNAL(vaIueChanged(int),okButton,SLOT(setTittIe(int);,信號(hào)和插槽機(jī)制,信號(hào)和插槽機(jī)制,多個(gè)信號(hào)可以被連接到一個(gè)槽connect(doPlusBox,SIGNAL(overflow(),this,SLOT(mathError();connect(doMinusBox,SIGNAL(lessZero(),this,SLOT(mathError0);,信號(hào)和插槽機(jī)制,一個(gè)信號(hào)可以被連接到另外一個(gè)信號(hào)connect(lineEdit,SIGNAL(textChanged(),this,SIGNAL(updateRecord();連接可以隨時(shí)移除disconnect(doPlusBox,SIGNAL(overflow(),this,SLOT(mathError();,以下是一個(gè)信號(hào)與槽的連接圖,信號(hào)和插槽機(jī)制,控件和功能類(lèi)示例,模擬液晶時(shí)鐘布局示例各種按鈕,模擬液晶時(shí)鐘,QLCDNumber控件顯示一個(gè)LCD數(shù)字風(fēng)格的文字,QLCDNumber窗口部件能夠在LCD上面顯示十進(jìn)制、十六進(jìn)制、八進(jìn)制、二進(jìn)制的數(shù)字。可以利用display()槽與數(shù)據(jù)源進(jìn)行連接,能夠重載五個(gè)任意類(lèi)型的display()。改變LCD的顯示范圍,可以通過(guò)調(diào)用函數(shù)setNumDigits()來(lái)完成。顯示十六進(jìn)制、八進(jìn)制、二進(jìn)制、十進(jìn)制的數(shù)值,您就可以調(diào)用函數(shù)setHexMode()、setOctMode()、setBinMode()、setDecMode()來(lái)將其設(shè)置。,各種按鈕,推動(dòng)按鈕單選按鈕復(fù)選按鈕,推動(dòng)按鈕,Qt的組件,推動(dòng)按鈕的描述推動(dòng)或者命令按鈕是任何GUI(圖形用戶(hù)界面)中最常用的窗口部件,它來(lái)命令計(jì)算機(jī)執(zhí)行一些操作,或者回答一個(gè)問(wèn)題。典型的按鈕有確定(OK)、應(yīng)用(Apply)、撤消(Cancel)、關(guān)閉(Close)、是(Yes)、否(No)和幫助(Help)等。該按鈕是矩形的,并且通常顯示一個(gè)文本標(biāo)簽來(lái)描述它的操作。標(biāo)簽中有下劃線的字母(在此它的前面用“這個(gè)實(shí)例中快捷鍵是Alt+H,并且文本標(biāo)簽將被顯示為Help。,推動(dòng)按鈕,推動(dòng)按鈕的成員QPushButton(QWidget*parent=0)構(gòu)造一個(gè)沒(méi)有文本的推動(dòng)按鈕,參數(shù)為parent。QPushButton(constQString/窗體初始化QPushButton*pushbutton=newQPushButton(Quit);QObject:connect(pushbutton,SIGNAL(clicked(),pushbutton,SLOT(close();pushbutton-show();/顯示該窗體returnapp.exec();運(yùn)行該實(shí)例的結(jié)果,如圖所示:,單選按鈕,單選按鈕的描述QRadioButton窗口部件為單選按鈕提供了一個(gè)文本標(biāo)簽。QRadioButton是一個(gè)能夠切換開(kāi)(選擇)或者關(guān)(沒(méi)有選擇)的選擇按鈕。通常單選按鈕是用于當(dāng)前用戶(hù)選擇許多中的一個(gè)選項(xiàng)。在同一時(shí)刻,單選按鈕組中僅僅只有一個(gè)按鈕被選擇;如果用戶(hù)選擇其他按鈕,以前選擇的按鈕將要切換為關(guān)閉狀態(tài)。當(dāng)一個(gè)按鈕切換開(kāi)或者關(guān)的時(shí)候,它就會(huì)發(fā)射toggled()信號(hào)。如果任何時(shí)刻你想觸發(fā)一個(gè)行為來(lái)改變按鈕的狀態(tài)的時(shí)候,可以連接這個(gè)信號(hào)。否則,使用isChecked()來(lái)查看是否有其他按鈕被選擇。像上述的QPushButton一樣,單選按鈕能夠顯示文本和可選擇的小圖標(biāo)。文本能夠在構(gòu)造函數(shù)中被設(shè)置,或者使用setText()函數(shù);設(shè)置圖標(biāo)可以使用setIcon()函數(shù)來(lái)設(shè)置。,單選按鈕,單選按鈕的成員QRadioButton:QRadioButton(QWidget*parent=0)構(gòu)造一個(gè)單選按鈕的窗口組件,但是該組件沒(méi)有文本或者圖象映射。parent參數(shù)傳遞給QAbstractButton構(gòu)造函數(shù)。QRadioButton:QRadioButton(constQString&text,QWidget*parent=0)構(gòu)造一個(gè)單選按鈕的窗體組件,該組件的參數(shù)為parent和text字符串。parent參數(shù)傳遞給QAbstractButton構(gòu)造函數(shù)。,復(fù)選按鈕,復(fù)選按鈕的描述QCheckBox窗口部件提供一個(gè)帶文本標(biāo)簽的復(fù)選按鈕。QCheckBox和QRadioButton都是選項(xiàng)按鈕。QCheckBox能夠在開(kāi)(選中)或者關(guān)(未選中)之間切換。QCheckBox和QRadioButton的區(qū)別是在于對(duì)用戶(hù)選擇的限制。單選按鈕定義了“多選一”的選擇,而復(fù)選按鈕定義了“多選多”的選擇。QButtonGroup在視覺(jué)上能夠把許多的復(fù)選按鈕組合在一起,成為一個(gè)按鈕組。無(wú)論復(fù)選按鈕選中或者是未選中,它都會(huì)發(fā)射一個(gè)信號(hào)toggled()。在任何時(shí)刻,如果您想改變復(fù)選按鈕的狀態(tài)的時(shí)候,需要連接toggled()信號(hào)觸發(fā)這個(gè)行為。您也可以利用isChecked()函數(shù)來(lái)查詢(xún)復(fù)選按鈕是否被選中。,復(fù)選按鈕,除了常用的選中和未選中兩個(gè)狀態(tài),QCheckBox還可以任意選擇第三種狀態(tài)來(lái)表明“沒(méi)有改變”。當(dāng)您需要給用戶(hù)一個(gè)選中或者未選中復(fù)選按鈕的選擇時(shí),這是非常有用的。如果您需要第三種狀態(tài),可以通過(guò)setTristate()來(lái)使它生效,利用checkState()函數(shù)來(lái)查詢(xún)當(dāng)前的切換狀態(tài)。與QPushButton一樣,復(fù)選按鈕可以顯示文本或者任意的小圖標(biāo)。文本可以通過(guò)構(gòu)造函數(shù)或者setText()來(lái)設(shè)置,圖標(biāo)可以通setIcon()來(lái)設(shè)置。,復(fù)選按鈕,復(fù)選按鈕的成員QCheckBox:QCheckBox(QWidget*parent=0)構(gòu)造一個(gè)參數(shù)為parent的復(fù)選按鈕,但是該按鈕不顯示文本信息。parent參數(shù)傳遞給QAbstractButton構(gòu)造函數(shù)。QCheckBox:QCheckBox(constQString&text,QWidget*parent=0)構(gòu)造一個(gè)參數(shù)為parent和text的復(fù)選按鈕。parent參數(shù)傳遞給QAbstractButton構(gòu)造函數(shù)。Qt:CheckStateQCheckBox:checkState()const返回復(fù)選框的復(fù)選狀態(tài)。也可以參考setCheckState()函數(shù)和Qt:CheckState。,復(fù)選按鈕,voidQCheckBox:setCheckState(Qt:CheckStatestate)參數(shù)state是用來(lái)設(shè)置復(fù)選框的復(fù)選狀態(tài)。voidQCheckBox:stateChanged(intstate)signal當(dāng)復(fù)選框的狀態(tài)改變的時(shí)候,就是發(fā)射stateChanged()信號(hào)。也就是說(shuō),用來(lái)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論