在qt中設定好的事件被觸發,可以傳送指定的訊號,而這個訊號是以廣播的方式傳遞的。訊號可分為預定義訊號和自定義訊號,自定義訊號需要使用signals進行修飾
槽是接受訊號後的相應的動作,在qt4中槽函式需要使用slots進行修飾,而在qt5中則不再需要了。
注意:槽函式的引數與返回型別應與訊號一致;槽函式可使用lambda表示式來替換
聯結器connet可以將訊號和槽關聯起來,但對於函式過載的訊號,在qt5中需要使用函式指標進行宣告具體的訊號,而在qt4中不需要
注意:qt4中使用巨集signal和slot完成對訊號和槽的連線,將訊號和槽轉換成字串,編譯時不進行錯誤校驗
#include
"mainwindow.h"
#include
#include
#include
#include
#include
#include
mainwindow::
mainwindow
(qwidget *parent)
:qmainwindow
(parent));
// 2.預定義訊號,預定義槽
connect
(button2,
&qpushbutton::clicked,
this
,&qmainwindow::close)
;// 3.預定義訊號,自定義槽
connect
(button3,
&qpushbutton::clicked,
this
,&mainwindow::myslot)
;connect
(button4,
&qpushbutton::clicked,
this
,&mainwindow::sendsignal)
;// 4.自定義訊號,自定義槽qt, qt4實現方法
// connect(this, signal(mysignal()), this, slot(myslot()));
// connect(this, signal(mysignal(qstring)), this, slot(myslot2(qstring)));
// 4.自定義訊號,自定義槽qt, qt5實現方法
void
(mainwindow::
*signal1)()
=&mainwindow::mysignal;
void
(mainwindow::
*signal2)
(qstring)
=&mainwindow::mysignal;
connect
(this
, signal1,
this
,&mainwindow::myslot)
;connect
(this
, signal2,
this
,&mainwindow::myslot2);}
void mainwindow::
myslot()
void mainwindow::
myslot2
(qstring mes =
"open file"
)void mainwindow::
sendsignal()
Qt知識點總結
自定義訊號槽注意事項 傳送者和接收者都需要是qobject 的子類 使用signals 標記訊號函式,訊號是乙個函式宣告,返回void,不需要實現函式 訊號作為函式名,不需要在cpp 函式中新增任何實現 槽函式是普通的成員函式,會受到public private protected 的影響 使用em...
QT 知識小結 一
1 qt介面亂碼的解決方法 解決在win7系統外其它系統主介面上漢字為亂碼的情況 可能是缺少相關的字型所引起的問題 qtextcodec codec qtextcodec codecforname system qtextcodec setcodecforlocale codec qtextcode...
Qt學習總結(一)
1 c 檔案中不同類如何共用乙個變數 標頭檔案1.h 原始檔1.cpp 其他原始檔2.cpp,3.cpp這些原始檔都包含標頭檔案1.h 方法 在1.h宣告全域性變數 extern int n 在1.cpp定義該全域性變數 int n 0 2.cpp和3.cpp均可直接使用變數n。2 正規表示式 第一...