




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、12022年6月12日第14章Qt圖形界面程序設計22022年6月12日主要內容主要內容 Qt的作用的作用 Qt簡介簡介 基本基本Qt程序示例程序示例 項目文件項目文件 利用利用qmake編譯程序編譯程序 應用消息應用消息/槽的槽的Qt程序示例程序示例 程序結構程序結構 界面布局界面布局 程序編譯程序編譯32022年6月12日Qt的作用的作用網絡協議網絡協議X客戶端(應用程序)客戶端(應用程序)X工具包、工具包、Gtk+,QtXLibX客戶端(應用程序)客戶端(應用程序)X工具包、工具包、Gtk+,QtXLibX服務器服務器設備驅動程序設備驅動程序 Qt工具包在工具包在XWindow中的作用中
2、的作用 和和Gtk+一樣,是一樣,是Xlib之上更高層的開發工具包,它們將底層之上更高層的開發工具包,它們將底層的的Xlib的的API進行封裝,提供更高級的接口,達到降低開發難進行封裝,提供更高級的接口,達到降低開發難度,提高開發效率的目的。度,提高開發效率的目的。 42022年6月12日Qt簡介簡介 良好的可移植性:良好的可移植性: X11:即運行在:即運行在X Window的系統,包括的系統,包括linux、unix等;等; windows系統:包括系統:包括windows95/98/Nt/2000/Xp/2003等;等; Macintosh系統:系統:Max OS X; 嵌入式系統;嵌入
3、式系統; 輔助工具輔助工具 Qmake:簡化編譯過程:簡化編譯過程 QtAssist:定位幫助信息:定位幫助信息 QtDesigner:輔助界面設計:輔助界面設計52022年6月12日Qt簡介簡介 Qt的維護與許可制度的維護與許可制度 不是由軟件組織和基金會維護;不是由軟件組織和基金會維護; 由由Nokia(Trolltech)國際化的公司維護;)國際化的公司維護; General Public License(GPL)、)、LGPL版本版本 ; 雙許可證(雙許可證(Dual Licensing)的版本)的版本 商業軟件商業軟件 非商業軟件非商業軟件62022年6月12日Qt簡介簡介 界面元素
4、的組織:界面元素的組織: 以類繼承的結構組織;以類繼承的結構組織; 基類:基類:QWidget; 事件與事件處理程序的關聯:事件與事件處理程序的關聯: 重載已有的事件處理程序;重載已有的事件處理程序; 適合于已經存在的事件處理函數適合于已經存在的事件處理函數 利用信號利用信號/槽的機制關聯信號(事件)和信號對應的槽的機制關聯信號(事件)和信號對應的事件。事件。 信號(信號(signal)是對象(類)向外界發送的任意)是對象(類)向外界發送的任意消息、事件,不僅僅是界面元素產生的一般消息消息、事件,不僅僅是界面元素產生的一般消息(鼠標、鍵盤等)。(鼠標、鍵盤等)。 槽(槽(slot)是可以接收消
5、息的特殊函數。)是可以接收消息的特殊函數。 72022年6月12日Qt簡介簡介Qt的執行過程如圖所示。Qt應用程序初始化之后,在Qt庫的支持下響應相應的處理事件并且返回。82022年6月12日Qt簡介簡介該實現過程需要Qt最主要的三個基類:QObject類、QApplication類和QWidget類。QObjectQObject類是所有能夠處理信號、槽和事件的Qt對象的基類,能夠創建帶有父對象及其名字的對象,對象的父對象可以看作該對象的所有者。QApplicationQApplication類負責GUI應用程序的控制流和主要設置。它包括主事件循環體,負責處理和調度所有來自窗口系統和其他資源的
6、事件,并且處理應用程序的開始、結束以及會話管理,還包括系統和應用程序方面的設置。QWidgetQWidget類是所有用戶接口對象的基類,它繼承了QObject類的屬性。組件是用戶界面的單元組成部分,它接收來自鼠標、鍵盤和其他窗口系統的事件,并且繪制到屏幕上。QWidget類有很多成員函數,但一般不直接使用,而是通過子類繼承來使用其函數功能。例如,QPushButton、QlistBox等都是它的子類。92022年6月12日Qt簡介簡介在Qt程序中,事件處理采用了信號(signal)和槽(slot)機制。信號和槽機制的好處是不需要調用翻譯表,節省資源。利用信號和槽進行對象間的通信是Qt最主要的特
7、征之一。 當對象狀態發生改變的時候,發出signal通知所有的slot接收signal,盡管它并不知道哪些函數定義了slot,而slot也不知道要接收怎樣的signal。signal和slot機制真正實現了封裝的概念,但它們之間并不是一一對應的。 顯然,由右圖可知,同一個信號可以連接到多個槽,多個信號也可以連接到同一個槽之中。隨時可以建立一個連接,或者取消一個連接。不過取消一個連接不是很常用,因為當一個對象被刪除后,它所包含的連接都會被自動取消。102022年6月12日基本基本Qt程序程序 程序運行效果程序運行效果 組成:組成: 一個窗口一個窗口 一個字符串一個字符串 動作:動作: 運行顯示窗
8、口運行顯示窗口 關閉退出關閉退出112022年6月12日程序清單程序清單hello.cpp1 #include 頭文件頭文件2 #include 頭文件頭文件3 int main(int argc, char *argv )主函數主函數4 QApplication app(argc, argv);應用程序對象應用程序對象5 QLabel label (Hello Qt!, 0);標簽對象標簽對象6 app.setMainWidget(&label);7 label.show();顯示標簽窗口顯示標簽窗口8 return app.exec();啟動程序啟動程序9 122022年6月12日
9、程序編譯程序編譯 項目文件項目文件 項目文件格式:項目文件格式: 基本格式:基本格式:變量名變量名 值值 TEMPLATE app 含義:生成一個可執行文件含義:生成一個可執行文件 其它取值:其它取值:lib,subdirs,vcapp,vclib;1 TEMPLATE = app2 INCLUDEPATH += .3 CONFIG += qt warn_on release4 SOURCES += hello.cpp132022年6月12日程序編譯程序編譯 含義:含義: lib:生成庫文件:生成庫文件 subdirs:生成某個目錄下的編譯指導文件;:生成某
10、個目錄下的編譯指導文件; vcapp:生成:生成vc+支持的可執行程序;支持的可執行程序; vclib:生成:生成vc+支持的庫文件。支持的庫文件。 INCLUDEPATH += . 含義:將當前目錄增加到頭文件的搜索路徑中去含義:將當前目錄增加到頭文件的搜索路徑中去 CONFIG += qt warn_on release 含義:將含義:將CONFIG變量的值增加三個字符串變量的值增加三個字符串 其它取值:其它取值: qt:生成的目標是基于:生成的目標是基于Qt庫的應用程序或者程序庫;庫的應用程序或者程序庫; debug:編譯時打開調試信息;:編譯時打開調試信息; release:編譯時進行
11、代碼優化;:編譯時進行代碼優化; warn_on:編譯時盡量多地報告警告信息;:編譯時盡量多地報告警告信息; warn_off:編譯時僅報告嚴重的警告信息;:編譯時僅報告嚴重的警告信息;142022年6月12日程序編譯程序編譯 程序編譯程序編譯查看文件查看文件生成生成Makefile查看結果查看結果編譯編譯查看結果查看結果152022年6月12日程序編譯程序編譯 命令分析命令分析 必需的命令:必需的命令: qmake :根據項目文件生成根據項目文件生成Makefile make:根據生成的:根據生成的Makefile編譯代碼生成可執編譯代碼生成可執行文件行文件hello 生
12、成的文件:生成的文件: Makefile:指導:指導make進行編譯的文件進行編譯的文件 hello.o:編譯源文件得到的目標文件:編譯源文件得到的目標文件 hello:將目標文件鏈接后得到的可執行文件:將目標文件鏈接后得到的可執行文件 程序運行:程序運行: 通過輸入可執行文件名運行:通過輸入可執行文件名運行: ./hello 得到程序界面得到程序界面162022年6月12日使用信號使用信號/槽的槽的Qt程序示例程序示例 程序運行界面程序運行界面 綠色:按鈕(綠色:按鈕(QPushButton ) 紅色:紅色:LCD數碼顯示(數碼顯示(QLCDNumber ) 藍色:編輯框(藍色:編輯框(QL
13、ineEdit ,QMultiLineEdit ) 黃色:自定義界面元素(黃色:自定義界面元素(MyWidget)quit start go lcd edit medit MyWidget 172022年6月12日使用信號使用信號/槽的槽的Qt程序示例程序示例 界面設計思路界面設計思路 整個界面為一個界面元素;整個界面為一個界面元素; 類型:類型:MyWidget 基類:基類:QWidget 其它元素組合在其它元素組合在MyWidget上;上; 界面元素:界面元素: quit start go lcd edit medit 界面布局界面布局網格布局網格布局grid (QGridLayout )
14、 元素之間通過信號元素之間通過信號/槽進行通訊槽進行通訊182022年6月12日使用信號使用信號/槽的槽的Qt程序示例程序示例 程序結構程序結構 主函數:主函數:main()() 功能:啟動消息循環,顯示程序界面功能:啟動消息循環,顯示程序界面 兩個類:兩個類: 類:類:Puzzle 功能:完成產生隨機數,并進行判斷功能:完成產生隨機數,并進行判斷 類:類:MyWidget 功能:定義并放置界面元素,接受用戶輸入;功能:定義并放置界面元素,接受用戶輸入; 5個文件個文件: main.cpp:定義主函數定義主函數 puzzle.h,puzzle.cpp:定義并實現類:定義并實現類Puzzle m
15、ywidget.h,mywidget.cpp:定義并實現類定義并實現類MyWidget192022年6月12日使用信號使用信號/槽的槽的Qt程序示例程序示例 文件目錄結構文件目錄結構當前工作目錄當前工作目錄 ./main.cppmywidget/mywidget.cppmywidget.hpuzzle.cpppuzzle.h202022年6月12日類結構類結構 類類Puzzle的結構的結構 符號含義:符號含義: :共有,:共有,public :私有,:私有,private 成員說明:成員說明: answer:猜數字的答案;:猜數字的答案; gen_answer():產生隨機數答案;產生隨機數答
16、案; get_answer():返回答案值;返回答案值; judge():將用戶的猜測和答案比較,得出比較結:將用戶的猜測和答案比較,得出比較結果;果; start():開始,調用過程產生答案;開始,調用過程產生答案;- int answer- int gen_answer()+int judge()+int get_answer()+void start()Puzzle212022年6月12日QWidgetMyWidget-quit,start,lcd,grid-edit,go,medit-count,guess-puzzle#closeEvent-init(),finalize(),get
17、Answer(),-showMsg()closeSignal()+onStart()+onGo()+onClose()類結構類結構 類類MyWidget結構結構 符號含義:符號含義: +、-、#:共有、私有、保護共有、私有、保護 三角:繼承關系三角:繼承關系 紅色:型號紅色:型號 綠色:槽綠色:槽 成員說明:成員說明: quit、start、lcd、edit、go、medit:界面上的元素:界面上的元素 grid:網格布局:網格布局 count:用戶猜測的次數:用戶猜測的次數 guess:用戶的猜測:用戶的猜測 puzzle:對象,完成產生隨機:對象,完成產生隨機數,并判斷的功能數,并判斷的功
18、能222022年6月12日類結構類結構 成員說明:成員說明: closeEvent:重載基類的方法;:重載基類的方法; init():游戲初始化;:游戲初始化; finalize():游戲結束的動作游戲結束的動作 getAnswer():得到用戶輸入的答案得到用戶輸入的答案 showMsg():根據用戶的猜測,給出提示信息根據用戶的猜測,給出提示信息 onStart():用戶點擊用戶點擊start按鈕的動作按鈕的動作 onGo():用戶點擊用戶點擊go按鈕的動作按鈕的動作 onClose():用戶點擊關閉按鈕的動作用戶點擊關閉按鈕的動作 closeSignal():程序關閉時,產生的信號。程序
19、關閉時,產生的信號。232022年6月12日界面布局界面布局 本例中為本例中為4行行3列的布局列的布局 坐標編碼方式和坐標編碼方式和Gtk+略有不同略有不同2100123startquitlcdeditgomedit242022年6月12日界面布局界面布局 向容器中放置界面元素的兩個方法向容器中放置界面元素的兩個方法 占據一個單元格占據一個單元格void QGridLayout:addWidget ( QWidget * w,/欲放置的界面元素欲放置的界面元素 int row,/行編號行編號 int col,/列編號列編號 int alignment = 0 );/對齊方式對齊方式 占據多個單
20、元格占據多個單元格void QGridLayout:addMultiCellWidget ( QWidget * w,/欲放置的界面元素欲放置的界面元素 int fromRow,/起始行編號起始行編號int toRow, /終止行編號終止行編號 int fromCol, /起始列編號起始列編號int toCol, /終止列編號終止列編號int alignment = 0 ); 252022年6月12日界面布局界面布局 元素位置參數取值元素位置參數取值元素名稱元素名稱行起始行起始行終止行終止列起始列起始列終止列終止start00quit01go12lcd02edit1101medit2302262022年6月12日項目文件項目文件增加的路徑:增加的路徑: 目錄:目錄:mywidget 文件:文件:mywidget目錄下的頭文件和目錄下的頭文件和cpp文件文件1 TEMPLATE = app2 DEPENDPATH += mywidget3 INCLUDEPATH += . mywidget4 CONFIG += qt warn_on release5 HEADERS += mywidget/mywidget.h mywidget/puzzle.h6 SOURCES += m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年電新行業供給回歸有序需求韌性較好靜待周期復蘇
- 直播電商主播在2025年的粉絲互動與營銷策略研究報告
- 老年教育課程設置改革與2025年體驗式教學方法應用分析報告
- 2025年農村一二三產業融合發展的農村電商與農業品牌建設報告
- 2025年文化旅游演藝項目季節性運營與市場策略報告
- 2025年成人教育終身學習平臺運營中的品牌建設與市場推廣報告
- 汽車輕量化材料在汽車底盤減重中的技術創新報告
- 汽車行業2025年供應鏈風險管理與企業風險管理策略優化方案報告
- 汽車共享平臺2025年運營模式轉型與用戶行為重構報告
- 2025年遠程醫療服務在分級診療中的遠程醫療技術與設備研發與創新報告
- 浙江省紹興市諸暨市2023-2024學年五年級下學期期末數學試卷
- 重慶市大足縣2023-2024學年四年級數學第二學期期末聯考試題含解析
- 煤礦調度智能化培訓課件
- 基于PLC的啤酒發酵自動控制系統
- 重慶市沙坪壩區2022-2023學年八年級下學期期末英語試題
- 思辨與創新智慧樹知到期末考試答案章節答案2024年復旦大學
- 手術室-標準側臥位擺放
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 合伙人退出協議書
- (高清版)DZT 0208-2020 礦產地質勘查規范 金屬砂礦類
- 2024年春江蘇開放大學先進制造技術第一次過程性考核作業答案
評論
0/150
提交評論