柚子快報(bào)激活碼778899分享:C++Qt學(xué)習(xí)——Qt信號(hào)槽
柚子快報(bào)激活碼778899分享:C++Qt學(xué)習(xí)——Qt信號(hào)槽
信號(hào)和槽是Qt編程的基礎(chǔ),他們的存在使得在Qt中處理界面各個(gè)組件的交互操作變得更加直觀簡(jiǎn)單。信號(hào)(SUGNAL):也就是發(fā)送者發(fā)送的函數(shù)信號(hào),例如PushButtun最常見(jiàn)的信號(hào)就是鼠標(biāo)單擊的時(shí)候發(fā)射的click()信號(hào)槽(SLOT):也就是說(shuō)接收者對(duì)信號(hào)響應(yīng)的函數(shù),槽也是一個(gè)函數(shù)。 用一個(gè)生活中的例子就是:?
?
目錄
?
1、使用Qt的信號(hào)槽
1.1、新建一個(gè)UI文件
?1.2、雙擊進(jìn)入mainwindow.ui
?1.3、在ui界面拖入一個(gè)PushButtun
1.4、雙擊修改按鈕名稱,并修改字體大小
1.5、設(shè)置按鍵位置和大小
1.6、將按鈕當(dāng)作發(fā)送者(對(duì)象),mainwindow當(dāng)作接收者
?1.7、點(diǎn)擊Signal_Slots Edit
?1.8、設(shè)置事件
方法一:先點(diǎn)擊綠色的加號(hào),再雙擊發(fā)送者,選擇pushbuttun,一次選擇信號(hào)為click()等。
?方法二:點(diǎn)擊左上角的信號(hào)槽連接
?A、按住按鈕拖出來(lái),彈出窗口,最后點(diǎn)擊ok。會(huì)發(fā)現(xiàn)會(huì)出現(xiàn)和方法一一樣的效果
方法三:用代碼寫(xiě)
A、選中按鈕,右鍵轉(zhuǎn)到槽
B、點(diǎn)擊click,點(diǎn)擊ok。跳轉(zhuǎn)到MainWindow函數(shù),寫(xiě)下案件觸發(fā)的事件,打印必須引用
C、按鍵F4,跳轉(zhuǎn)到聲明,這是Qtcreator創(chuàng)建好的
D、按住ctrl+R,運(yùn)行即可
2、Qt信號(hào)槽介紹
2.1、在mainwindow.cpp里面寫(xiě)
2.2、按住ctrl+R,運(yùn)行即可
3、自定義信號(hào)槽
3.1、按住Ctrl+N,創(chuàng)建Student和School類
3.2、點(diǎn)擊student.h發(fā)現(xiàn)已經(jīng)將信號(hào)創(chuàng)建好了,因?yàn)槲覀冊(cè)O(shè)置的學(xué)校是發(fā)送者,所以直接在signals下直接聲明函數(shù)
3.3、在student.h里面自定義槽
3.4、在mainwindow.h里面引入頭文件以及class類
3.5、創(chuàng)建school和student的對(duì)象
3.6、在mainwindow.cpp里面實(shí)例化
3.7、連接信號(hào)槽
3.7.1、一個(gè)信號(hào)可以鏈接多個(gè)槽
3.7.2、多個(gè)信號(hào)可以鏈接同一個(gè)槽
3.7.3、 一個(gè)信號(hào)可以鏈接另外一個(gè)信號(hào)
1、使用Qt的信號(hào)槽
1.1、新建一個(gè)UI文件
?1.2、雙擊進(jìn)入mainwindow.ui
?1.3、在ui界面拖入一個(gè)PushButtun
1.4、雙擊修改按鈕名稱,并修改字體大小
1.5、設(shè)置按鍵位置和大小
1.6、將按鈕當(dāng)作發(fā)送者(對(duì)象),mainwindow當(dāng)作接收者
?1.7、點(diǎn)擊Signal_Slots Edit
?1.8、設(shè)置事件
方法一:先點(diǎn)擊綠色的加號(hào),再雙擊發(fā)送者,選擇pushbuttun,一次選擇信號(hào)為click()等。
那么這個(gè)就是點(diǎn)擊按鈕主窗口關(guān)閉
?方法二:點(diǎn)擊左上角的信號(hào)槽連接
?A、按住按鈕拖出來(lái),彈出窗口,最后點(diǎn)擊ok。會(huì)發(fā)現(xiàn)會(huì)出現(xiàn)和方法一一樣的效果
?
方法三:用代碼寫(xiě)
A、選中按鈕,右鍵轉(zhuǎn)到槽
B、點(diǎn)擊click,點(diǎn)擊ok。跳轉(zhuǎn)到MainWindow函數(shù),寫(xiě)下案件觸發(fā)的事件,打印必須引用
#include
C、按鍵F4,跳轉(zhuǎn)到聲明,這是Qtcreator創(chuàng)建好的
D、按住ctrl+R,運(yùn)行即可
2、Qt信號(hào)槽介紹
信號(hào)與槽關(guān)聯(lián)是用QObject::connect()函數(shù)來(lái)實(shí)現(xiàn)的,基本格式是:
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
在應(yīng)用中,OBject是所有Qt類的基類,因此可以將上面的話換成
connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
2.1、在mainwindow.cpp里面寫(xiě)
this就是MainWindow,主窗口
2.2、按住ctrl+R,運(yùn)行即可
3、自定義信號(hào)槽
3.1、按住Ctrl+N,創(chuàng)建Student和School類
3.2、點(diǎn)擊student.h發(fā)現(xiàn)已經(jīng)將信號(hào)創(chuàng)建好了,因?yàn)槲覀冊(cè)O(shè)置的學(xué)校是發(fā)送者,所以直接在signals下直接聲明函數(shù)
3.3、在student.h里面自定義槽
定義函數(shù)
3.4、在mainwindow.h里面引入頭文件以及class類
3.5、創(chuàng)建school和student的對(duì)象
3.6、在mainwindow.cpp里面實(shí)例化
3.7、連接信號(hào)槽
3.7.1、一個(gè)信號(hào)可以鏈接多個(gè)槽
? ? connect(school, SIGNAL(sendMessages()), student, SLOT(comeBackToClass()));
? ? connect(school, SIGNAL(sendMessages()), this, SLOT(hide()));
運(yùn)行不報(bào)錯(cuò)
3.7.2、多個(gè)信號(hào)可以鏈接同一個(gè)槽
connect(school, SIGNAL(sendMessages2()), student, SLOT(comeBackToClass()));
connect(school, SIGNAL(sendMessages2()), student, SLOT(close()));
運(yùn)行不報(bào)錯(cuò)
3.7.3、 一個(gè)信號(hào)可以鏈接另外一個(gè)信號(hào)
emit:發(fā)送信號(hào)的關(guān)鍵字
connect(school, SIGNAL(sendMessages2()), student, SIGNAL(iconSizeChanged()));
emit school->sendMessages();
運(yùn)行不報(bào)錯(cuò)
柚子快報(bào)激活碼778899分享:C++Qt學(xué)習(xí)——Qt信號(hào)槽
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。