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

下載本文檔

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

文檔簡介

嵌入式系統(tǒng)的圖形用戶界面1預(yù)習(xí)檢查嵌入式平臺有哪些主流的GUI?QT的特點(diǎn)是哪些?信號和插槽的概念?22本章目標(biāo)熟悉嵌入式平臺下主流GUI掌握嵌入式QT的組成結(jié)構(gòu)和特點(diǎn)掌握一個(gè)簡單QT程序掌握布局和按鈕控件3本章結(jié)構(gòu)嵌入式系統(tǒng)的圖形用戶界面圖形用戶界面QT/Embedded應(yīng)用程序框架

信號和插槽程序框架和示例控件示例4常見的LinuxGUI工具XWindows(UNIX/Linux)QtGTKClutterJava(Android)DirectFBMiniGUIMicroWindows/NanoXOpenGL/OpenglES圖形用戶界面5QT-C++圖形用戶界面庫

Qt是一個(gè)跨平臺的C++圖形用戶界面應(yīng)用程序框架,由Nokia公司出品。目前產(chǎn)品包括Qt、Qt/Embedded、快速開發(fā)工具QtDesigner、國際化工具QtLinguist等部分。Qt支持Unix,Linux,Windows,WinCE,Symbian平臺Qt是基于面向?qū)ο蟮腃++語言,它提供了信號(signal)和槽(slot)的對象通信機(jī)制,具有可查詢和可設(shè)計(jì)的屬性,以及強(qiáng)大的事件和事件過濾器。同時(shí),它還具有字符國際化,即支持根據(jù)上下文進(jìn)行國際化字符串翻譯。許多Qt特性基于QObject的繼承,通過標(biāo)準(zhǔn)C++技術(shù)實(shí)現(xiàn)6Qt的本質(zhì)是一些應(yīng)用程序庫,它以動態(tài)庫,靜態(tài)庫和頭文件的形式給出.Qt是跨平臺庫支持平臺包括Linux,MacOS,windows,嵌入式Linux,windowsCE,Symbian,提供C++語言接口.建議先不要使用QtCreator、QDesigner這些集成開發(fā)環(huán)境,而應(yīng)該直接學(xué)習(xí)Qt庫中類的使用,以知其所以然.QT/Embedded簡介7QT特點(diǎn)優(yōu)良的跨平臺特性面向?qū)ο驫t的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好

豐富的APIQt包括多達(dá)400個(gè)以上的C++類,同時(shí)不斷擴(kuò)展支持2D/3D圖形渲染,支持OpenGLXML支持開放源碼8Qt程序結(jié)構(gòu)//main.cpp#include<QApplication>#include<QtGui>intmain(intargc,char*argv[]){

//每個(gè)程序都要有一個(gè)QApplication對象 QApplicationapp(argc,argv); QWidgetwin;//創(chuàng)建窗口對象 win.show();//顯示窗口 returnapp.exec();//進(jìn)入事件循環(huán)}//事件循環(huán)是響應(yīng)鼠標(biāo)輸入、信號槽的基礎(chǔ)9創(chuàng)建工程文件的和可執(zhí)行文件qmake-project //生成工程文件.proqmake //qmake分析源文件生成Makefilemake //執(zhí)行Makefile編譯10QObject類Object類是所有Qt對象的唯一基類QObject是對象模型的中心,這個(gè)模型的中心特征就是一種用于無縫對象通訊的被叫做信號和槽的非常強(qiáng)大的機(jī)制QObject把它們自己組織在對象樹中。當(dāng)你創(chuàng)建一個(gè)QObject作為其它對象的父對象,這個(gè)對象會在父對象中自動調(diào)用insertChild()并且可以在父對象的children()列表中顯示出來事件:事件是由窗口系統(tǒng)或qt本身對各種事務(wù)的反應(yīng)而產(chǎn)生的。當(dāng)用戶按下、釋放一個(gè)鍵或鼠標(biāo)按鈕,一個(gè)鍵盤或鼠標(biāo)事件被產(chǎn)生;當(dāng)窗口第一次顯示,一個(gè)繪圖事件產(chǎn)生,從而告知最新的可見窗口需要重繪自身。大多數(shù)事件是由于響應(yīng)用戶的動作而產(chǎn)生的,但還有一些,比如定時(shí)器等,是由系統(tǒng)獨(dú)立產(chǎn)生的。11QApplication類

QApplication類管理圖形用戶界面應(yīng)用程序的控制流和主要設(shè)置它包含主事件循環(huán),負(fù)責(zé)處理和調(diào)度所有來自窗口系統(tǒng)和其他資源的事件,

處理應(yīng)用程序的開始、結(jié)束以及會話管理系統(tǒng)和應(yīng)用程序方面的設(shè)置12QWidget類

QWidget類是所有用戶界面對象的基類,它繼承了QObject類的屬性。窗口部件是用戶界面的一個(gè)原子:它從窗口系統(tǒng)接收鼠標(biāo)、鍵盤和其它事件,并且在屏幕上繪制自己的表現(xiàn)。每一個(gè)窗口部件都是矩形,并且它們按Z軸順序排列的。一個(gè)窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。QWidget類有很多成員函數(shù),但一般不直接使用,而是通過子類繼承來使用其函數(shù)功能。如,QPushButton、QlistBox等都是它的子類一個(gè)沒有父窗口部件的窗口部件一直是頂級窗口部件。非頂級窗口部件是子窗口部件。它們是它們的父窗口部件中的子窗口。你通常不能在視覺角度從它們的父窗口部件中辨別一個(gè)子窗口部件。13布局使用Qt的布局管理類:這些類能夠給出所有類型控件的默認(rèn)值,能夠根據(jù)控件的字體,樣式,內(nèi)容得到不同的控件的sizeHint。布局管理類能夠得到控件的最大,最小尺寸,在字體,內(nèi)容或者窗口改變時(shí)自動調(diào)整布局。QHBoxLayout,QVBoxLayout,QGridLayout是三個(gè)最重要的布局管理器。這些類從QLayout繼承,QLayout提供布局最基本的框架。14實(shí)現(xiàn)對象間通信的技術(shù)用戶事件:指程序的用戶所產(chǎn)生的事件,例如:點(diǎn)擊鼠標(biāo)程序事件:指程序所產(chǎn)生的事件,例:當(dāng)用戶點(diǎn)擊鼠標(biāo)后程序退出發(fā)射信號:“發(fā)出”一個(gè)信號。例:當(dāng)你點(diǎn)擊鼠標(biāo)時(shí),將發(fā)射(clicked)信號,為了發(fā)射信號,使用emit關(guān)鍵字MOC:元對象編譯器,用于構(gòu)造用戶自己的信號和槽信號和插槽機(jī)制15插槽:是標(biāo)準(zhǔn)的成員函數(shù)(作為類成員的函數(shù)),但是增加了一些特殊的功能使它們能夠連接到信號,每當(dāng)槽所連接的信號被發(fā)射時(shí),槽(函數(shù))就被執(zhí)行。信號:一種特殊的成員函數(shù),它們被定義為當(dāng)某個(gè)事件發(fā)生時(shí)就被發(fā)射,之后執(zhí)行所有被連接的槽使用信號和插槽非常簡單,只需要編寫一行代碼就能夠?qū)⒂脩羰录统绦蚴录B接起來 connect(sender,SIGNAL(signal),receiver,SLOT(slot));信號和插槽機(jī)制16信號和插槽機(jī)制在Qt中大多數(shù)類都繼承自QObject,繼承自它的類都支持信號與槽機(jī)制。信號與槽泛泛的說就是一種對象間的通信機(jī)制,一個(gè)對象發(fā)送信號,會導(dǎo)致另一個(gè)對象的槽函數(shù)被調(diào)用,槽函數(shù)是一個(gè)對象的成員函數(shù)。哪個(gè)對象的信號觸發(fā)哪個(gè)對象的槽函數(shù)需要由connect函數(shù)事先綁定。信號是一個(gè)沒有函數(shù)體的成員函數(shù),有點(diǎn)類似消息或純虛函數(shù)(但不是純虛函數(shù))。在Qt中信號與槽都可以由程序員自定義,許多Qt已有的類中已經(jīng)定義有信號與槽。17一個(gè)信號可以被連接到多個(gè)槽connect(inputBox,SlGNAL(valueChanged(int)),staticBox,SLOT(setValue(int)));connect(inputBox,SIGNAL(vaIueChanged(int)),okButton,SLOT(setTittIe(int)));信號和插槽機(jī)制18信號和插槽機(jī)制多個(gè)信號可以被連接到一個(gè)槽connect(doPlusBox,SIGNAL(overflow()),this,SLOT(mathError()));connect(doMinusBox,SIGNAL(lessZero()),this,SLOT(mathError0));19信號和插槽機(jī)制一個(gè)信號可以被連接到另外一個(gè)信號connect(lineEdit,SIGNAL(textChanged()),this,SIGNAL(updateRecord());連接可以隨時(shí)移除disconnect(doPlusBox,SIGNAL(overflow()),this,SLOT(mathError()));20以下是一個(gè)信號與槽的連接圖信號和插槽機(jī)制21控件和功能類示例模擬液晶時(shí)鐘布局示例各種按鈕22模擬液晶時(shí)鐘

QLCDNumber控件顯示一個(gè)LCD數(shù)字風(fēng)格的文字QLCDNumber窗口部件能夠在LCD上面顯示十進(jìn)制、十六進(jìn)制、八進(jìn)制、二進(jìn)制的數(shù)字??梢岳胐isplay()槽與數(shù)據(jù)源進(jìn)行連接,能夠重載五個(gè)任意類型的display()。改變LCD的顯示范圍,可以通過調(diào)用函數(shù)setNumDigits()來完成。顯示十六進(jìn)制、八進(jìn)制、二進(jìn)制、十進(jìn)制的數(shù)值,您就可以調(diào)用函數(shù)setHexMode()

、setOctMode()、setBinMode()、

setDecMode()來將其設(shè)置。23各種按鈕推動按鈕單選按鈕復(fù)選按鈕24推動按鈕Qt的組件推動按鈕的描述

推動或者命令按鈕是任何GUI(圖形用戶界面)中最常用的窗口部件,它來命令計(jì)算機(jī)執(zhí)行一些操作,或者回答一個(gè)問題。典型的按鈕有確定(OK)、應(yīng)用(Apply)、撤消(Cancel)、關(guān)閉(Close)、是(Yes)、否(No)和幫助(Help)等。

該按鈕是矩形的,并且通常顯示一個(gè)文本標(biāo)簽來描述它的操作。標(biāo)簽中有下劃線的字母(在此它的前面用“&”標(biāo)明)表明快捷鍵,比如:QPushButton*pushbutton=newQPushButton("&Help",this); 這個(gè)實(shí)例中快捷鍵是Alt+H,并且文本標(biāo)簽將被顯示為Help。25推動按鈕推動按鈕的成員QPushButton(QWidget*parent=0)構(gòu)造一個(gè)沒有文本的推動按鈕,參數(shù)為parent。QPushButton(constQString&text,QWidget*parent=0)構(gòu)造一個(gè)父對象為parent、文本為text的推動按鈕。QPushButton(constQIcon&icon,constQString&text,QWidget*parent=0)構(gòu)造一個(gè)圖標(biāo)為icon、文本為text、父對象為parent的推動按鈕。注意:您可以傳遞一個(gè)QPixmap作為一個(gè)圖標(biāo)(感謝由C++提供的隱含類型轉(zhuǎn)換)。26推動按鈕QPushButton()銷毀這個(gè)推動按鈕。voidQButton::setText(constQString&)設(shè)置這個(gè)按鈕上顯示的文本。voidQButton::pressed()當(dāng)這個(gè)按鈕被按下的時(shí)候,將要發(fā)射該信號。voidQPushButton::setMenu(QMenu*menu)這個(gè)按鈕與彈出式的菜單menu聯(lián)系在一起。這樣就可以把一個(gè)普通的按鈕變成菜單按鈕,在該按鈕的文本的右邊會出現(xiàn)一個(gè)倒置的小三角。27推動按鈕推動按鈕的實(shí)例 該實(shí)例的功能,當(dāng)您按下退出按鈕的時(shí)候,就會退出系統(tǒng)。以下是該實(shí)例的代碼:/*main.cpp*/#include<QApplication>//當(dāng)窗口初始化的時(shí)候,引用的頭文件#include<QPushButton>//定義QPushButton對象,引用的頭文件intmain(intargc,char**argv){QApplicationapp(argc,argv);//窗體初始化QPushButton*pushbutton=newQPushButton("Quit");QObject::connect(pushbutton,SIGNAL(clicked()),pushbutton,SLOT(close()));pushbutton->show();//顯示該窗體returnapp.exec();}運(yùn)行該實(shí)例的結(jié)果,如圖所示:28單選按鈕單選按鈕的描述 QRadioButton窗口部件為單選按鈕提供了一個(gè)文本標(biāo)簽。 QRadioButton是一個(gè)能夠切換開(選擇)或者關(guān)(沒有選擇)的選擇按鈕。通常單選按鈕是用于當(dāng)前用戶選擇許多中的一個(gè)選項(xiàng)。在同一時(shí)刻,單選按鈕組中僅僅只有一個(gè)按鈕被選擇;如果用戶選擇其他按鈕,以前選擇的按鈕將要切換為關(guān)閉狀態(tài)。 當(dāng)一個(gè)按鈕切換開或者關(guān)的時(shí)候,它就會發(fā)射toggled()信號。如果任何時(shí)刻你想觸發(fā)一個(gè)行為來改變按鈕的狀態(tài)的時(shí)候,可以連接這個(gè)信號。否則,使用isChecked()來查看是否有其他按鈕被選擇。像上述的QPushButton一樣,單選按鈕能夠顯示文本和可選擇的小圖標(biāo)。文本能夠在構(gòu)造函數(shù)中被設(shè)置,或者使用setText()函數(shù);設(shè)置圖標(biāo)可以使用setIcon()函數(shù)來設(shè)置。29單選按鈕單選按鈕的成員QRadioButton::QRadioButton(QWidget*parent=0)構(gòu)造一個(gè)單選按鈕的窗口組件,但是該組件沒有文本或者圖象映射。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ù)。30復(fù)選按鈕復(fù)選按鈕的描述QCheckBox窗口部件提供一個(gè)帶文本標(biāo)簽的復(fù)選按鈕。QCheckBox和QRadioButton都是選項(xiàng)按鈕。QCheckBox能夠在開(選中)或者關(guān)(未選中)之間切換。QCheckBox和QRadioButton的區(qū)別是在于對用戶選擇的限制。單選按鈕定義了“多選一”的選擇,而復(fù)選按鈕定義了“多選多”的選擇。QButtonGroup在視覺上能夠把許多的復(fù)選按鈕組合在一起,成為一個(gè)按鈕組。 無論復(fù)選按鈕選中或者是未選中,它都會發(fā)射一個(gè)信號toggled()。在任何時(shí)刻,如果您想改變復(fù)選按鈕的狀態(tài)的時(shí)候,需要連接toggled()信號觸發(fā)這個(gè)行為。您也可以利用isChecked()函數(shù)來查詢復(fù)選按鈕是否被選中。31復(fù)選按鈕 除了常用的選中和未選中兩個(gè)狀態(tài),QCheckBox還可以任意選擇第三種狀態(tài)來表明“沒有改變”。當(dāng)您需要給用戶一個(gè)選中或者未選中復(fù)選按鈕的選擇時(shí),這是非常有用的。如果您需要第三種狀態(tài),可以通過setTristate()來使它生效,利用checkState()函數(shù)來查詢當(dāng)前的切換狀態(tài)。 與QPushButton一樣,復(fù)選按鈕可以顯示文本或者任意的小圖標(biāo)。文本可以通過構(gòu)造函數(shù)或者setText()來設(shè)置,圖標(biāo)可以通setIcon()來設(shè)置。32復(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ù)為paren

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論