簡單的乙個訊號槽的連線

2021-06-05 03:22:53 字數 1609 閱讀 2313

乙個很簡陋的訊號和槽的連線
#include#include#include#includeusing std::vector;

using std::string;

//除錯的時候用來看name,實際上沒有用

class uobject

; //template//void setsobj(sig signal,uobject* r,slot reactslot){};

string name; };

templateclass connectstruct

sender m_s;

sig m_sig;

recver m_r;

slot m_slot;

};//記錄訊號資訊的類

templateclass ssinfor

static int m_s; //發射次數

static sig m_sig;

static int m_count; //連線量

static int m_c2;

};templateint ssinfor::m_s = 0;

templatesig ssinfor::m_sig = null;

templateint ssinfor::m_count = 0;

templateint ssinfor::m_c2 = 0;

static int i = 90;

templateclass sigfunc

static contype funvec;

static calltype callvec;

static void callback _timerproc(

hwnd hwnd,

uint umsg,

uint idevent,

dword dwtime

);};templatevector*> sigfunc::funvec;

templatevector* > sigfunc::callvec;

templatevoid callback sigfunc::_timerproc( hwnd hwnd, uint umsg, uint idevent, dword dwtime )

else}}

}//ssinfor::m_s -= 1; }

}templatevoid addsignode(connectstruct* connode)

templatevoid connect(sender s,sig signal,recver r,slot reactslot)

templatevoid callslot(sig)

class obj

; void sig1()

};class listener : public uobject

void slot1()

std::cin.get();

return 0;

}

執行結果

timer設定時間很短的時候槽被觸發的順序會不確定,原因還不清楚,可能是windows裡面有對於timer的優化。

關於訊號槽的乙個問題

這又是乙個小白問題。今天在做窗體間傳值時遇到乙個問題 connect返回true,但是槽收不到訊號。經過檢查發現問題 connect的 訊號 物件必須和發射訊號的物件是同乙個。如,在mainwindow的建構函式中 qobject connect pdlgserial,signal changese...

QT多個訊號鏈結乙個槽

做專案的時候需要用到多個訊號鏈結乙個槽,多個訊號來自不同的控制項,怎麼能分辨出是哪個控制項。看 widget widget qwidget parent qwidget parent void widget button name 四個button按鈕鏈結到乙個槽函式button name 上,通過...

Qt訊號槽連線函式connect 的簡單使用方法

connect b2,qpushbutton released,this,mainwidget myslot 抬起 按鈕b2時,修改按鈕b2的標題 connect b4,qpushbutton released,b4 mutable 在此處新增mutable關鍵字,代表傳進來的變數可以被修改,不寫該...