QT學習 訊號與槽

2021-07-23 03:04:52 字數 1632 閱讀 7749

最近在學習qt訊號與槽。

先看看我自己寫的乙個demo.這個demo沒有窗體。

在qt creator中新建乙個 空的qt專案

.pro檔案如下:

template
headers

+=\

mysignal.h\
myslot.h
sources

+=\

mysignal.cpp\
myslot.cpp\
main.cpp
包含三個cpp檔案和2個.h檔案: main.cpp  :主函式,通過呼叫connect,實現自定義的訊號和槽的連線。

mysignal.cpp  mysignal.h :.h檔案宣告自定義的類,.

cpp檔案中實現自定義的類的函式(方法),

myslot.cpp ,myslot.h : .h檔案宣告自定義的類,.

cpp檔案中實現自定義的類的函式(方法),

main.cpp如下:

#include "mysignal.h"

#include "myslot.h"

mysignal.h 

#ifndef mysignal_h

#define mysignal_h

#include #include class mysignal : public qobject

;#endif // mysignal_h

mysignal.cpp

#include "mysignal.h"

mysignal::mysignal(qobject* parent)

: qobject(parent)

myslot.cpp

#include "myslot.h"

myslot::myslot(qobject *parent) :

qobject(parent)

void myslot::slot(qstring str)

myslot.h

#ifndef myslot_h

#define myslot_h

#include #include #include class myslot : public qobject

;#endif // myslot_h

//槽函式必須用slots宣告 如果不宣告,編譯會提示找不到槽函式.我在初學的時候忘記了在槽函式前加s//lots,然後就一直提示找不到qobject::connect: no such slot myslot::slot(qstring) in

..\t09sig//nalandslot\main.cpp:12

程式輸出結果如下:

即訊號將引數傳遞給槽函式了。

如果要使用qt的訊號槽機制,必須在相應的類中宣告q_object

q_object

qt 槽與訊號

槽就是乙個可以被呼叫處理特定訊號的函式 乙個小的qt類如下 class foo public qobject public slots void setvalue int signals void valuechanged int private int val qt中的元物件系統是用來處理物件間通...

QT訊號與槽

初學qt,覺得理解qt訊號與槽比較重要,qt很多時候都需要用到訊號和槽。發射訊號會觸發相對應的槽函式的執行。乙個訊號可以對應多個槽,多個訊號可以對應乙個槽。訊號和槽是通過connect這個方法進行建立聯絡的。qt中有些類會自帶有一些訊號和槽函式,當然訊號和槽函式也可以自己定義。下面來看下很簡單的 會...

Qt訊號與槽

訊號的定義必須在signals 保留字下,並且不需要實現 槽的定義必須在slots 保留字下,需要實現 訊號和槽通過qobject connect函式連線 當訊號被觸發時,槽函式被呼叫 需要注意的是 訊號和槽是qt的拓展,所以實現訊號和槽的類,必須是qobject的子類 實現訊號和槽的類,必須以巨集...