多執行緒與介面元件通訊

2021-10-13 02:57:55 字數 1094 閱讀 2917

思路:在子執行緒中使用postevent()傳送自定義的事件類物件,在主線程中更改介面狀態

自定義事件類

#ifndef stringevent_h

#define stringevent_h

#include #include class stringevent : public qevent

;#endif // stringevent_h

#include "stringevent.h"

stringevent::stringevent(qstring data) : qevent(type)

qstring stringevent::data()

在widget類中重寫event()函式,用來捕獲postevent()傳送的事件

#ifndef updateui_h

#define updateui_h

#include #include #include class updateui : public qthread

;#endif // updateui_h

#include "updateui.h"

每隔1s傳送乙個事件類物件

void updateui::run()

quit();

}

#ifndef widget_h

#define widget_h

#include #include #include class widget : public qwidget

;#endif // widget_h

#include "widget.h"

widget::widget(qwidget *parent)

: qwidget(parent)

widget::~widget()

bool widget::event(qevent *event)

else

return true;

}

#include "widget.h"

輸出

執行緒通訊,多執行緒

多執行緒 thread handler thread處理一些複雜的業務邏輯 耗時的事情 handler在主線程中接收訊息的乙個物件 mhandler.sendmessage msg 傳送乙個訊息物件 mhandler.sendemptymessage what 傳送空訊息,只有what沒有obj m...

多執行緒 執行緒通訊

總結 今天小鹹兒來講解乙個好玩的事,那就是執行緒之間該如何通訊,執行緒通訊之後又會出現什麼問題?先來一張導圖來看看執行緒通訊的分布?疑問 如果想要執行緒按照使用者自定義的順序執行的話,那該如何操作呢?思考 如果能夠讓執行緒等待先執行的執行緒執行完,再執行不就能達到效果了嗎!果然出現問題之後,就會有對...

多執行緒 執行緒通訊

1.使用wait notify方法實現執行緒之間的通訊 1 有其他執行緒呼叫同乙個物件的notify或者notifyall方法 呼叫notify notifyall方法之前 2 被喚醒之後重新獲得物件的鎖 呼叫notify notifyall方法之後 編寫測試 如下 執行結果 2.管道通訊 管道流主...