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

2021-06-09 02:42:24 字數 1058 閱讀 2521

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 中多執行緒訊號傳遞 例項的內容介紹完了,希望本文能幫你解決問題。

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

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

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

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

多執行緒之間同步

1 posix訊號量 includeint sem init sem t sem,int pshared,unsigned int value int sem destroy sem t sem int sem wait sem t sem sem trywait sem t sem int sem...