




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
嵌入式系統(tǒng)的圖形用戶界面1預習檢查嵌入式平臺有哪些主流的GUI?QT的特點是哪些?信號和插槽的概念?22本章目標熟悉嵌入式平臺下主流GUI掌握嵌入式QT的組成結構和特點掌握一個簡單QT程序掌握布局和按鈕控件3本章結構嵌入式系統(tǒng)的圖形用戶界面圖形用戶界面QT/Embedded應用程序框架
信號和插槽程序框架和示例控件示例4常見的LinuxGUI工具XWindows(UNIX/Linux)QtGTKClutterJava(Android)DirectFBMiniGUIMicroWindows/NanoXOpenGL/OpenglES圖形用戶界面5QT-C++圖形用戶界面庫
Qt是一個跨平臺的C++圖形用戶界面應用程序框架,由Nokia公司出品。目前產品包括Qt、Qt/Embedded、快速開發(fā)工具QtDesigner、國際化工具QtLinguist等部分。Qt支持Unix,Linux,Windows,WinCE,Symbian平臺Qt是基于面向對象的C++語言,它提供了信號(signal)和槽(slot)的對象通信機制,具有可查詢和可設計的屬性,以及強大的事件和事件過濾器。同時,它還具有字符國際化,即支持根據(jù)上下文進行國際化字符串翻譯。許多Qt特性基于QObject的繼承,通過標準C++技術實現(xiàn)6Qt的本質是一些應用程序庫,它以動態(tài)庫,靜態(tài)庫和頭文件的形式給出.Qt是跨平臺庫支持平臺包括Linux,MacOS,windows,嵌入式Linux,windowsCE,Symbian,提供C++語言接口.建議先不要使用QtCreator、QDesigner這些集成開發(fā)環(huán)境,而應該直接學習Qt庫中類的使用,以知其所以然.QT/Embedded簡介7QT特點優(yōu)良的跨平臺特性面向對象Qt的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好
豐富的APIQt包括多達400個以上的C++類,同時不斷擴展支持2D/3D圖形渲染,支持OpenGLXML支持開放源碼8Qt程序結構//main.cpp#include<QApplication>#include<QtGui>intmain(intargc,char*argv[]){
//每個程序都要有一個QApplication對象 QApplicationapp(argc,argv); QWidgetwin;//創(chuàng)建窗口對象 win.show();//顯示窗口 returnapp.exec();//進入事件循環(huán)}//事件循環(huán)是響應鼠標輸入、信號槽的基礎9創(chuàng)建工程文件的和可執(zhí)行文件qmake-project //生成工程文件.proqmake //qmake分析源文件生成Makefilemake //執(zhí)行Makefile編譯10QObject類Object類是所有Qt對象的唯一基類QObject是對象模型的中心,這個模型的中心特征就是一種用于無縫對象通訊的被叫做信號和槽的非常強大的機制QObject把它們自己組織在對象樹中。當你創(chuàng)建一個QObject作為其它對象的父對象,這個對象會在父對象中自動調用insertChild()并且可以在父對象的children()列表中顯示出來事件:事件是由窗口系統(tǒng)或qt本身對各種事務的反應而產生的。當用戶按下、釋放一個鍵或鼠標按鈕,一個鍵盤或鼠標事件被產生;當窗口第一次顯示,一個繪圖事件產生,從而告知最新的可見窗口需要重繪自身。大多數(shù)事件是由于響應用戶的動作而產生的,但還有一些,比如定時器等,是由系統(tǒng)獨立產生的。11QApplication類
QApplication類管理圖形用戶界面應用程序的控制流和主要設置它包含主事件循環(huán),負責處理和調度所有來自窗口系統(tǒng)和其他資源的事件,
處理應用程序的開始、結束以及會話管理系統(tǒng)和應用程序方面的設置12QWidget類
QWidget類是所有用戶界面對象的基類,它繼承了QObject類的屬性。窗口部件是用戶界面的一個原子:它從窗口系統(tǒng)接收鼠標、鍵盤和其它事件,并且在屏幕上繪制自己的表現(xiàn)。每一個窗口部件都是矩形,并且它們按Z軸順序排列的。一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。QWidget類有很多成員函數(shù),但一般不直接使用,而是通過子類繼承來使用其函數(shù)功能。如,QPushButton、QlistBox等都是它的子類一個沒有父窗口部件的窗口部件一直是頂級窗口部件。非頂級窗口部件是子窗口部件。它們是它們的父窗口部件中的子窗口。你通常不能在視覺角度從它們的父窗口部件中辨別一個子窗口部件。13布局使用Qt的布局管理類:這些類能夠給出所有類型控件的默認值,能夠根據(jù)控件的字體,樣式,內容得到不同的控件的sizeHint。布局管理類能夠得到控件的最大,最小尺寸,在字體,內容或者窗口改變時自動調整布局。QHBoxLayout,QVBoxLayout,QGridLayout是三個最重要的布局管理器。這些類從QLayout繼承,QLayout提供布局最基本的框架。14實現(xiàn)對象間通信的技術用戶事件:指程序的用戶所產生的事件,例如:點擊鼠標程序事件:指程序所產生的事件,例:當用戶點擊鼠標后程序退出發(fā)射信號:“發(fā)出”一個信號。例:當你點擊鼠標時,將發(fā)射(clicked)信號,為了發(fā)射信號,使用emit關鍵字MOC:元對象編譯器,用于構造用戶自己的信號和槽信號和插槽機制15插槽:是標準的成員函數(shù)(作為類成員的函數(shù)),但是增加了一些特殊的功能使它們能夠連接到信號,每當槽所連接的信號被發(fā)射時,槽(函數(shù))就被執(zhí)行。信號:一種特殊的成員函數(shù),它們被定義為當某個事件發(fā)生時就被發(fā)射,之后執(zhí)行所有被連接的槽使用信號和插槽非常簡單,只需要編寫一行代碼就能夠將用戶事件和程序事件連接起來 connect(sender,SIGNAL(signal),receiver,SLOT(slot));信號和插槽機制16信號和插槽機制在Qt中大多數(shù)類都繼承自QObject,繼承自它的類都支持信號與槽機制。信號與槽泛泛的說就是一種對象間的通信機制,一個對象發(fā)送信號,會導致另一個對象的槽函數(shù)被調用,槽函數(shù)是一個對象的成員函數(shù)。哪個對象的信號觸發(fā)哪個對象的槽函數(shù)需要由connect函數(shù)事先綁定。信號是一個沒有函數(shù)體的成員函數(shù),有點類似消息或純虛函數(shù)(但不是純虛函數(shù))。在Qt中信號與槽都可以由程序員自定義,許多Qt已有的類中已經定義有信號與槽。17一個信號可以被連接到多個槽connect(inputBox,SlGNAL(valueChanged(int)),staticBox,SLOT(setValue(int)));connect(inputBox,SIGNAL(vaIueChanged(int)),okButton,SLOT(setTittIe(int)));信號和插槽機制18信號和插槽機制多個信號可以被連接到一個槽connect(doPlusBox,SIGNAL(overflow()),this,SLOT(mathError()));connect(doMinusBox,SIGNAL(lessZero()),this,SLOT(mathError0));19信號和插槽機制一個信號可以被連接到另外一個信號connect(lineEdit,SIGNAL(textChanged()),this,SIGNAL(updateRecord());連接可以隨時移除disconnect(doPlusBox,SIGNAL(overflow()),this,SLOT(mathError()));20以下是一個信號與槽的連接圖信號和插槽機制21控件和功能類示例模擬液晶時鐘布局示例各種按鈕22模擬液晶時鐘
QLCDNumber控件顯示一個LCD數(shù)字風格的文字QLCDNumber窗口部件能夠在LCD上面顯示十進制、十六進制、八進制、二進制的數(shù)字。可以利用display()槽與數(shù)據(jù)源進行連接,能夠重載五個任意類型的display()。改變LCD的顯示范圍,可以通過調用函數(shù)setNumDigits()來完成。顯示十六進制、八進制、二進制、十進制的數(shù)值,您就可以調用函數(shù)setHexMode()
、setOctMode()、setBinMode()、
setDecMode()來將其設置。23各種按鈕推動按鈕單選按鈕復選按鈕24推動按鈕Qt的組件推動按鈕的描述
推動或者命令按鈕是任何GUI(圖形用戶界面)中最常用的窗口部件,它來命令計算機執(zhí)行一些操作,或者回答一個問題。典型的按鈕有確定(OK)、應用(Apply)、撤消(Cancel)、關閉(Close)、是(Yes)、否(No)和幫助(Help)等。
該按鈕是矩形的,并且通常顯示一個文本標簽來描述它的操作。標簽中有下劃線的字母(在此它的前面用“&”標明)表明快捷鍵,比如:QPushButton*pushbutton=newQPushButton("&Help",this); 這個實例中快捷鍵是Alt+H,并且文本標簽將被顯示為Help。25推動按鈕推動按鈕的成員QPushButton(QWidget*parent=0)構造一個沒有文本的推動按鈕,參數(shù)為parent。QPushButton(constQString&text,QWidget*parent=0)構造一個父對象為parent、文本為text的推動按鈕。QPushButton(constQIcon&icon,constQString&text,QWidget*parent=0)構造一個圖標為icon、文本為text、父對象為parent的推動按鈕。注意:您可以傳遞一個QPixmap作為一個圖標(感謝由C++提供的隱含類型轉換)。26推動按鈕QPushButton()銷毀這個推動按鈕。voidQButton::setText(constQString&)設置這個按鈕上顯示的文本。voidQButton::pressed()當這個按鈕被按下的時候,將要發(fā)射該信號。voidQPushButton::setMenu(QMenu*menu)這個按鈕與彈出式的菜單menu聯(lián)系在一起。這樣就可以把一個普通的按鈕變成菜單按鈕,在該按鈕的文本的右邊會出現(xiàn)一個倒置的小三角。27推動按鈕推動按鈕的實例 該實例的功能,當您按下退出按鈕的時候,就會退出系統(tǒng)。以下是該實例的代碼:/*main.cpp*/#include<QApplication>//當窗口初始化的時候,引用的頭文件#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();}運行該實例的結果,如圖所示:28單選按鈕單選按鈕的描述 QRadioButton窗口部件為單選按鈕提供了一個文本標簽。 QRadioButton是一個能夠切換開(選擇)或者關(沒有選擇)的選擇按鈕。通常單選按鈕是用于當前用戶選擇許多中的一個選項。在同一時刻,單選按鈕組中僅僅只有一個按鈕被選擇;如果用戶選擇其他按鈕,以前選擇的按鈕將要切換為關閉狀態(tài)。 當一個按鈕切換開或者關的時候,它就會發(fā)射toggled()信號。如果任何時刻你想觸發(fā)一個行為來改變按鈕的狀態(tài)的時候,可以連接這個信號。否則,使用isChecked()來查看是否有其他按鈕被選擇。像上述的QPushButton一樣,單選按鈕能夠顯示文本和可選擇的小圖標。文本能夠在構造函數(shù)中被設置,或者使用setText()函數(shù);設置圖標可以使用setIcon()函數(shù)來設置。29單選按鈕單選按鈕的成員QRadioButton::QRadioButton(QWidget*parent=0)構造一個單選按鈕的窗口組件,但是該組件沒有文本或者圖象映射。parent參數(shù)傳遞給QAbstractButton構造函數(shù)。QRadioButton::QRadioButton(constQString&text,QWidget*parent=0)構造一個單選按鈕的窗體組件,該組件的參數(shù)為parent和text字符串。parent參數(shù)傳遞給QAbstractButton構造函數(shù)。30復選按鈕復選按鈕的描述QCheckBox窗口部件提供一個帶文本標簽的復選按鈕。QCheckBox和QRadioButton都是選項按鈕。QCheckBox能夠在開(選中)或者關(未選中)之間切換。QCheckBox和QRadioButton的區(qū)別是在于對用戶選擇的限制。單選按鈕定義了“多選一”的選擇,而復選按鈕定義了“多選多”的選擇。QButtonGroup在視覺上能夠把許多的復選按鈕組合在一起,成為一個按鈕組。 無論復選按鈕選中或者是未選中,它都會發(fā)射一個信號toggled()。在任何時刻,如果您想改變復選按鈕的狀態(tài)的時候,需要連接toggled()信號觸發(fā)這個行為。您也可以利用isChecked()函數(shù)來查詢復選按鈕是否被選中。31復選按鈕 除了常用的選中和未選中兩個狀態(tài),QCheckBox還可以任意選擇第三種狀態(tài)來表明“沒有改變”。當您需要給用戶一個選中或者未選中復選按鈕的選擇時,這是非常有用的。如果您需要第三種狀態(tài),可以通過setTristate()來使它生效,利用checkState()函數(shù)來查詢當前的切換狀態(tài)。 與QPushButton一樣,復選按鈕可以顯示文本或者任意的小圖標。文本可以通過構造函數(shù)或者setText()來設置,圖標可以通setIcon()來設置。32復選按鈕復選按鈕的成員QCheckBox::QCheckBox(QWidget*parent=0)構造一個參數(shù)為parent的復選按鈕,但是該按鈕不顯示文本信息。parent參數(shù)傳遞給QAbstractButton構造函數(shù)。QCheckBox::QCheckBox(constQString&text,QWidget*parent=0)構造一個參數(shù)為paren
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公共政策在道德與法律中的應用試題及答案
- 公共政策的社會影響評估試題及答案
- 2024年干氣制乙苯催化劑項目投資申請報告代可行性研究報告
- 軟考網(wǎng)絡工程師真實案例試題及答案
- 網(wǎng)絡工程師的行業(yè)前景展望試題及答案
- 軟件設計師應考策略總結試題及答案
- 文化政策的實施與反響試題及答案
- 2025年常州市村黨組織書記招聘鎮(zhèn)事業(yè)單位招聘筆試試卷
- 深度學習軟件設計師考試試題及答案
- 西方政治制度對少數(shù)群體權益的保障機制試題及答案
- 醫(yī)院全面預算管理培訓
- DB52T 1696-2022 口腔綜合治療臺用水衛(wèi)生管理規(guī)范
- 科室內停水停電應急演練預案
- 2024年部編版九年級語文上冊電子課本(高清版)
- 綠化遷移施工方案
- 員工宿舍公約
- 2024年江西省高考地理真題(原卷版)
- 2024年山東省棗莊市中考地理試卷(含答案)
- 服裝加工廠生產外包合同
- 2024年自考《14269數(shù)字影像設計與制作》考試復習題庫(含答案)
- 2024-2030年全球及中國無線自組網(wǎng)模塊市場營銷格局及未來銷售模式研究報告
評論
0/150
提交評論