Qt信號(hào)和槽、常用函數(shù)及繪圖(sail)_第1頁(yè)
Qt信號(hào)和槽、常用函數(shù)及繪圖(sail)_第2頁(yè)
Qt信號(hào)和槽、常用函數(shù)及繪圖(sail)_第3頁(yè)
Qt信號(hào)和槽、常用函數(shù)及繪圖(sail)_第4頁(yè)
Qt信號(hào)和槽、常用函數(shù)及繪圖(sail)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 2 信號(hào)和槽 信號(hào)和槽的基本實(shí)現(xiàn)語(yǔ)句(掌握、重點(diǎn)) 信號(hào)和槽的連接規(guī)則(掌握、重點(diǎn)) 信號(hào)和槽的參數(shù)匹配規(guī)則(掌握、重點(diǎn)) 常用函數(shù) QWidget等類常用函數(shù)(熟悉) 繪圖 個(gè)性化圖形繪制方法(掌握、重點(diǎn)) 常用QPainter類函數(shù)(熟悉) QPainter類實(shí)現(xiàn)個(gè)性化程序的方案(了解) 3 信號(hào)和槽 信號(hào)和槽的基本實(shí)現(xiàn)語(yǔ)句(掌握、重點(diǎn)) 信號(hào)和槽的連接規(guī)則(掌握、重點(diǎn)) 信號(hào)和槽的參數(shù)匹配規(guī)則(掌握、重點(diǎn)) 常用函數(shù) QWidget等類常用函數(shù)(熟悉) 繪圖 個(gè)性化圖形繪制方法(掌握、重點(diǎn)) 常用QPainter類函數(shù)(熟悉) QPainter類實(shí)現(xiàn)個(gè)性化程序的方案(了解) 4 問題

2、的提出 例子的窗體中,點(diǎn)擊“hide”或“show”按鈕, 為何窗口能做出相應(yīng)的響應(yīng)? 問題的分析 顯示功能對(duì)應(yīng)對(duì)象的show()函數(shù),隱藏功能對(duì) 應(yīng)對(duì)應(yīng)對(duì)象的hide()函數(shù) 點(diǎn)擊按鈕后執(zhí)行該函數(shù)即可 問題的解決 使用“信號(hào)和槽”機(jī)制完成該任務(wù)的過(guò)程:按 下按鈕clicked()信號(hào)產(chǎn)生槽函數(shù)hide() 被調(diào)用窗體隱藏 5 信號(hào) 一個(gè)特定的標(biāo)識(shí),當(dāng)內(nèi)部發(fā)生某些事件或狀態(tài) 改變時(shí)能夠被“發(fā)射” 槽 槽和普通的C+類的成員函數(shù)幾乎是一樣的 唯一不同的是:槽可以和信號(hào)連接在一起,當(dāng) 發(fā)射這個(gè)信號(hào)的時(shí)候,就會(huì)自動(dòng)調(diào)用這個(gè)槽 作用 對(duì)象之間通信的高級(jí)接口 事件出現(xiàn)時(shí),通過(guò)發(fā)送信號(hào)將與之關(guān)聯(lián)的槽函 數(shù)

3、激活,即執(zhí)行槽函數(shù)代碼 6 7 程序總結(jié): 信號(hào)和槽的連接基本實(shí)現(xiàn)語(yǔ)句: QObject:connect(a,SIGNAL(a_signal(int), b,SLOT(b_slot(int) Connect是靜態(tài)成員函數(shù),需要加QObject: 如果是QObject子類來(lái)調(diào)用則不用 連接的兩個(gè)對(duì)象需要在連接前已經(jīng)存在,否則 會(huì)報(bào)錯(cuò) a_signal和b_slot中只能有參數(shù)類型,而非具 體的值 8 一個(gè)信號(hào)可以連接多個(gè)槽 Task 再創(chuàng)建一個(gè)label,點(diǎn)擊hide按鈕或 show按鈕按鈕時(shí)兩個(gè)label能同時(shí)顯示或隱藏 多個(gè)信號(hào)可以連接一個(gè)槽 Task 在最初程序基礎(chǔ)上再創(chuàng)建一個(gè)按鈕,點(diǎn) 兩

4、個(gè)按鈕中任意一個(gè)都可以隱藏label 一個(gè)信號(hào)可以與另外一個(gè)信號(hào)相連接 Task 連接兩個(gè)按鈕的clicked信號(hào) 9 要把信號(hào)成功連接到槽或另一個(gè)信號(hào),它們 的參數(shù)必須具有相同的順序和類型 注:參數(shù)匹配的檢查使用strcmp函數(shù),所以類型必須 嚴(yán)格一致。如string和const string就不匹配 例外:信號(hào)參數(shù)比槽多,多余參數(shù)被忽略 如果類型不匹配,或信號(hào)和槽不存在,編譯 時(shí)不會(huì)報(bào)錯(cuò),運(yùn)行時(shí)會(huì)有警告 10 練習(xí)1: 使用滑塊控制LCD上的數(shù)字發(fā)生變化 練習(xí)2: 使用按鈕控制動(dòng)畫的暫停和播放 11 在designer中創(chuàng)建一個(gè)按鈕,一個(gè)標(biāo)簽 選擇“編輯/信號(hào)和槽” 拖動(dòng)連接按鈕和標(biāo)簽,彈

5、出信號(hào)和槽選擇 對(duì)話框,觀察有哪些信號(hào)和槽 窗體/預(yù)覽,查看效果 12 問題的提出 之前是使用Qt類中已定義的信號(hào)和槽,如果是 自己定義實(shí)現(xiàn)的類,如何加入信號(hào)和槽機(jī)制, 實(shí)現(xiàn)自己想要的功能? 問題的分析 聲明自定義的信號(hào),直接使用,無(wú)需實(shí)現(xiàn) 聲明自定義的槽,跟類成員函數(shù)一樣實(shí)現(xiàn) 問題的解決 聲明時(shí)分別加入slots和signals關(guān)鍵字即可 使用信號(hào)時(shí): emit my_order(angle) 13 類的聲明開始處加入Q_OBJECT宏,標(biāo)準(zhǔn)C+ 不支持,Qt通過(guò)moc(Meta Object Compiler)工具自動(dòng)將其轉(zhuǎn)為C+代碼 槽函數(shù)和普通C+類成員函數(shù)一樣實(shí)現(xiàn),但 是當(dāng)做真正的槽

6、使用的時(shí)候訪問權(quán)限的定 義沒有任何效果 信號(hào)只需聲明無(wú)需實(shí)現(xiàn),定義的訪問權(quán)限 沒有意義 必須把類定義從實(shí)現(xiàn)文件中分離出來(lái)并放 到頭文件中。 14 15 16 程序總結(jié): 自定義的類一般可以從QWidget類繼承 信號(hào)和槽都是類的成員函數(shù) 自定義槽加關(guān)鍵字slots 自定義信號(hào)加關(guān)鍵字signals 使用自定義信號(hào): emit my_signal(參數(shù)列表) 17 練習(xí)1: 用兩個(gè)按鈕分別控制動(dòng)畫的暫停和繼續(xù)播放 練習(xí)2: 創(chuàng)建一個(gè)按鈕和LCD,每次點(diǎn)擊按鈕,LCD上的 數(shù)字值加1 練習(xí)3: 做一個(gè)簡(jiǎn)單的猜數(shù)字游戲。內(nèi)部規(guī)則等獨(dú)立為 一個(gè)類,該類的構(gòu)造函數(shù)中隨機(jī)產(chǎn)生目標(biāo)值, 有槽函數(shù)接收用戶猜測(cè)

7、的數(shù)字,發(fā)信號(hào)表明猜 測(cè)的結(jié)果 18 信號(hào)和槽 信號(hào)和槽的基本實(shí)現(xiàn)語(yǔ)句(掌握、重點(diǎn)) 信號(hào)和槽的連接規(guī)則(掌握、重點(diǎn)) 信號(hào)和槽的參數(shù)匹配規(guī)則(掌握、重點(diǎn)) 常用函數(shù) QWidget等類常用函數(shù)(熟悉) 繪圖 個(gè)性化圖形繪制方法(掌握、重點(diǎn)) 常用QPainter類函數(shù)(熟悉) QPainter類實(shí)現(xiàn)個(gè)性化程序的方案(了解) 19 QWidget類: setEnabled(bool)控件使能 setDisabled(bool)輸入使能 width()窗口寬度 height()窗口高度 close()關(guān)閉 show()顯示 hide()隱藏 QFont類: QFont font(Helvetic

8、a,12,QFont:Bold) setFont(font)字體設(shè)置方式 20 QLCDNumber類: setNumDigits()位數(shù)設(shè)置 display()內(nèi)容顯示 QTimer類: start()啟動(dòng)定時(shí) timeout()到時(shí)信號(hào) QString類: toInt()字符串轉(zhuǎn)整數(shù) toAScii()16位字符串轉(zhuǎn)8位 number()字符串轉(zhuǎn)數(shù)字 fromAscii()8位字符串轉(zhuǎn)16位 21 信號(hào)和槽 信號(hào)和槽的基本實(shí)現(xiàn)語(yǔ)句(掌握、重點(diǎn)) 信號(hào)和槽的連接規(guī)則(掌握、重點(diǎn)) 信號(hào)和槽的參數(shù)匹配規(guī)則(掌握、重點(diǎn)) 常用函數(shù) QWidget等類常用函數(shù)(熟悉) 繪圖 個(gè)性化圖形繪制方法(掌

9、握、重點(diǎn)) 常用QPainter類函數(shù)(熟悉) QPainter類實(shí)現(xiàn)個(gè)性化程序的方案(了解) 22 Qt事件處理的意義 作為GUI界面,需要做很多和用戶交互的事情。 事件(event)很大程度上就是響應(yīng)用戶動(dòng)作 Qt的事件處理機(jī)制 事件產(chǎn)生時(shí),調(diào)用event()函數(shù),由它根據(jù) 事件類型調(diào)用相應(yīng)的事件處理器,如 mousePressEvent()、paintEvent()等 所以約定的事件發(fā)生時(shí)對(duì)應(yīng)的函數(shù)自動(dòng)被調(diào)用。 通過(guò)重寫該函數(shù)對(duì)應(yīng)代碼實(shí)現(xiàn)相應(yīng)功能 23 繪圖事件的意義 常用的控件外,怎樣來(lái)一些個(gè)性的外觀,比如 最基本的矩形、圓等; 重新實(shí)現(xiàn)paintEvent()函數(shù)可以繪制個(gè)性化控 件

10、,更能定制窗口部件,隨心所欲控制外觀; 繪圖事件程序的處理流程 代碼放置在paintEvent()中,即重新實(shí)現(xiàn)繪圖 事件處理器; 創(chuàng)建QPaint類的對(duì)象,調(diào)用相關(guān)QPainter類的 函數(shù)實(shí)現(xiàn)個(gè)性化繪制; 24 Qt的二維圖形繪制基于QPainter類 可以繪制幾何形狀(點(diǎn)、線、矩形、橢圓等) 可以繪制像素映射、圖形和文字 高級(jí)特性:像素混合、漸變填充、平移、旋轉(zhuǎn)等 QPainter類的使用 畫筆(setPen):畫線和邊緣 畫刷(setBrush):填充幾何形狀的圖案 字體(setFont):用來(lái)繪制文字,字體可選 25 26 27 程序總結(jié): 重新實(shí)現(xiàn)void paintEvent(Q

11、PaintEvent *)函 數(shù) paintEvent函數(shù)中定義QPainter對(duì)象 使用該對(duì)象調(diào)用相關(guān)函數(shù),實(shí)現(xiàn)繪圖,繪圖相 關(guān)的操作都需要在該函數(shù)體中執(zhí)行 28 程序總結(jié): 窗口視口轉(zhuǎn)換模式,相當(dāng)于把一張電子圖片放到大小 不同的顯示器上去顯示 QPainter:setWindow(x,y,width,height)設(shè)置窗口 QPainter:setViewport(x,y,width,height)設(shè)置視口 29 QPainter類常用函數(shù) drawEllipse()畫橢圓 drawRect()畫矩形 drawLine()畫直線 drawPicture()畫圖片 drawImage() 繪圖片 drawPixmap()繪圖片 drawText()繪文本 fillRect()填充矩形 30 QPainter類常用函數(shù) rotate()角度旋轉(zhuǎn) translate()坐標(biāo)變換 save()畫筆保存 restore()畫筆恢復(fù) setBrush()設(shè)置畫刷 setPen()設(shè)置畫筆 setFont()設(shè)置字體 31 信號(hào)和槽 信號(hào)和槽的基本實(shí)現(xiàn)語(yǔ)句(掌握、重點(diǎn)) 信號(hào)和槽的連接規(guī)則(掌握、重點(diǎn)) 信號(hào)和槽的參數(shù)匹配規(guī)則(掌握、重點(diǎn)) 常

溫馨提示

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

評(píng)論

0/150

提交評(píng)論