QThread與其他執行緒間相互通訊

2021-05-22 19:41:38 字數 703 閱讀 5312

qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成, 用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒(諸如新建乙個qwidget或者qdialog)。如果要想通過新建的執行緒實現乙個gui的功能,那麼就需要通過使用執行緒間的通訊來實現。這裡使用乙個簡單的例子來理解一下 qthread中signal/slot的相關用法。

首先,派生乙個qthread的子類  

mythread.h

void send(qstring s)就是定義的訊號

mythread.cpp

emit send("this is the son thread") 為發射此訊號,在run中迴圈傳送,每次休眠五秒

之後我們需要在另外的執行緒中定義乙個slot來接受mythread發出的訊號。如新建乙個mywidget

mywidget.h

void receiveslot(qstring s)就用來接受發出的訊號,並且實現引數的傳遞。

mywidget .cpp

接受函式實現彈出發送訊號中所含引數(qstring型別)的訊息框

在main()函式中建立新執行緒,來實現兩個執行緒間的互動。

main.cpp

執行後,當mywidget彈出後,子執行緒mythread每隔5s即會彈出乙個提醒視窗,執行緒間通訊就此完成。

QThread與其他執行緒間相互通訊

qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成,用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒 諸如新建乙個qwidget或者qdialog 如果要想通過新建的執行緒實現...

QThread與其他執行緒間相互通訊

qthread的用法其實比較簡單,只需要派生乙個qthread的子類,實現其中的run虛函式就大功告成,用的時候建立該類的例項,呼叫它的start方法即可。但是run函式使用時有一點需要注意,即在其中不能建立任何gui執行緒 諸如新建乙個qwidget或者qdialog 如果要想通過新建的執行緒實現...

C 泛型與其他型別的相互轉換

泛型類及型別轉換 泛型類 public class mytemplate t 設計乙個泛型類 public void t s 內容相連或者相加 else if s is string 字串相連 else if s is double 浮點數相加 else if s is bool bool型求或 p...