資源描述:
《qt圖形用戶界面》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、圖形用戶界面QT第四章本章計(jì)劃可視對(duì)象的返回值和數(shù)據(jù)<初級(jí)>鼠標(biāo),鍵盤(pán),定時(shí)器等事件的捕捉一些事件的虛函數(shù)重載,信號(hào)從基類(lèi)轉(zhuǎn)發(fā)掌握QDialog,QTimer,QTime掌握QSettings,QSqlDatabase了解QtNetWork掌握QGraphicsView,QGraphicsScene掌握QGraphicsItem,QPixmap計(jì)算器里的關(guān)于窗口上面有2個(gè)按鈕,確定和取消,QMainWindow怎么知道你按了哪一個(gè)呢?首先,那個(gè)是一個(gè)按鈕組buttonBox,是QDialog組件里就關(guān)聯(lián)好信號(hào)的。在信號(hào)和槽
2、編輯器里能看的到。我們可以看看QDialog的槽accept()和rejecct()起什么作用,看HELP文檔可視對(duì)象的返回值和數(shù)據(jù)QDialog的槽accept()和rejecct()HELP文檔里是這么解釋的,看懂了嗎?voidQDialog::accept()?[virtualslot]Hidesthemodaldialogandsetstheresultcodeto?Accepted.voidQDialog::reject()?[virtualslot]Hidesthemodaldialogandsetsthere
3、sultcodeto?Rejected.voidQDialog::accepted()?[signal]Thissignalisemittedwhenthedialoghasbeenacceptedeitherbytheuserorbycallingaccept()ordone()withtheQDialog::Acceptedargument.QDialog的返回值跟據(jù)HELP文檔,我們可以這樣寫(xiě)代碼鼠標(biāo),鍵盤(pán),定時(shí)器等事件的捕捉事件在Qt里分很多種,比如鼠標(biāo),鍵盤(pán),定時(shí)器,窗體擴(kuò)大縮小,有鼠標(biāo)飄過(guò),有數(shù)值變化等等,任何
4、一個(gè)小動(dòng)作,在GUI里都會(huì)觸發(fā)某種事件。當(dāng)事件產(chǎn)生時(shí),怎么來(lái)進(jìn)行處理呢?跟據(jù)C++的語(yǔ)言特性,虛函數(shù)重載可以解決這個(gè)問(wèn)題,所有可以處理的事件,一定都是虛函數(shù)?,F(xiàn)在我們來(lái)做一個(gè)close事件處理。close事件的捕捉還記得第一個(gè)例子嗎,一個(gè)按鈕一按就關(guān)閉窗口了。當(dāng)然按右上角的X,也可以關(guān)閉,但有的窗口按了右上角的X會(huì)跳出一個(gè)框來(lái)。這個(gè)是通過(guò)重載關(guān)閉事件而處理出的一個(gè)框,怎么做呢?QMainWindow的close事件在哪?剛剛講過(guò),所有能處理的事件,一定是虛函數(shù),那虛函數(shù)去哪找?去protected里找?,F(xiàn)在我們要關(guān)閉的是Q
5、MainWindow,并且要它跳出那個(gè)框出來(lái),怎么找相應(yīng)事件呢?來(lái)查下HELP文檔QMainWindow的close事件在哪?點(diǎn)不出來(lái)吧?為啥?因?yàn)镼MainWindow沒(méi)有,那怎么查?去找它的基類(lèi),它一定是從基類(lèi)里繼承了所有的事件。點(diǎn)進(jìn)Qwidget這個(gè)基類(lèi)以后,再點(diǎn)ProtectedFuntionsQMainWindow的close事件在哪?找到close事件了點(diǎn)進(jìn)看去說(shuō)明和例子Bydefault,theeventisacceptedandthewidgetisclosed.Youcanreimplementthisf
6、unctiontochangethewaythewidgetrespondstowindowcloserequests.Forexample,youcanpreventthewindowfromclosingbycallingignore()onallevents.你看不懂可以復(fù)制查google百度有道翻譯就對(duì)了。要還在發(fā)呆,就是你的不對(duì)了。重載基類(lèi)的虛函數(shù)的代碼怎么寫(xiě)1.想想C++語(yǔ)法,派生類(lèi)怎么去重載基類(lèi)的虛函數(shù)把聲明抄過(guò)來(lái).cpp的重載代碼怎么寫(xiě)?C語(yǔ)言就強(qiáng)調(diào)了,用誰(shuí)的東西,就include誰(shuí)的頭文件一按X就重載了c
7、lose事件,在這里我們用QMessageBox速生成了一個(gè)小框,然后取它的返回值看你按了什么鍵,如果按的取消,據(jù)據(jù)QMainWindow的HELP文檔用ignore()接口忽略close事件中文顯示的處理#includeintmain(intargc,char*argv[]){QApplicationa(argc,argv);QTextCodec*codec=QTextCodec::codecForName("GB2312");QTextCodec::setCodecForLocale(codec
8、);QTextCodec::setCodecForCStrings(codec);QTextCodec::setCodecForTr(codec);MainWindoww;w.show();returna.exec();}一個(gè)窗口有多少種事件可以處理呢?看看HELP文檔里的protected里有多少種事