Qt 中多執行緒訊號傳遞 例項

2021-05-28 16:15:57 字數 1111 閱讀 6102

qt 多執行緒訊號傳遞

qobject::connect(const qobject * sender, const char * signal, 

const qobject * receiver, const char * method, 

qt::connectiontype type = autoconnection); 

這個函式預設(即最後乙個引數type為autoconnection)情況下只能在相同執行緒下的不同類之間傳遞訊號,若想要把訊號傳遞給另外乙個執行緒下執行的類例項,必須要修改type的列舉值。

可以改為qt::queuedconnection,這樣就能傳遞給其他執行緒下的類例項了。

另外,對於帶引數的訊息,引數的資料型別必須為qt支援的元資料型別,如int、qstring等,若要傳遞自定義的資料型別,必須把自定義的資料型別註冊為元資料型別。

舉個例子,比如我再兩個執行緒下分別執行了兩個類例項mainwindow *mainwnd和manager *mngr,mainwindow把方法addusers(lphoststruct )設為槽,manager把方法newusercome(lphoststruct )設為訊息,其中lphoststruct為自定義的資料型別。要是想在manager中順利的使用emit newusercome(lphost)(lphost為lphoststruct的乙個例項),就要經過兩步

一、註冊lphoststruct為qt的元資料型別

qregistermetatype<

lphoststruct

> ("lphoststruct"); 

二、呼叫qobject::connect方法,連線訊號和槽,這裡要注意修改connect方法的第五個引數

qobject::connect(mngr, signal(newusercome(lphoststruct)), mainwnd, slot(adduser(lphoststruct))); 

Qt 中多執行緒訊號傳遞 例項

2011 06 30 17 31 佚名 網際網路 字型大小 t t 本文介紹的是qt 中多執行緒訊號傳遞 例項,關於qt 中的多執行緒,相信友們接觸了不少,先來看本文介紹。ad qt 多執行緒的訊號傳遞 qobject connect const qobject sender,const char ...

Qt多執行緒之間的訊號傳遞

qt 多執行緒的訊號傳遞 qobject connect const qobject sender,const char signal,const qobject receiver,const char method,qt connectiontype type autoconnection 這個函...

qt 多執行緒 訊號槽

qt訊號多執行緒 當你connect的時候,型別為qt autoconnection就好了 如果slot在同一執行緒就是直接呼叫,如果slot在另外乙個執行緒就通過事件機制處理 在qt中,你的執行緒在呼叫exec函式後就進入了事件迴圈機制 這時,如果另外乙個執行緒傳送了乙個訊號過來 1 如果接收執行...