執行緒間通訊:
1.自定義事件:postevent();
2.訊號與槽【本質也是通過自定義事件實現的】
注意:每個執行緒都有自己的事件迴圈
下面先說明下訊號與槽的通訊:
下面這個程式的執行截圖
此程式的邏輯:
主線程有乙個qprogressbar。
有乙個子執行緒,把主線程裡面的qprogressbar傳入子執行緒。
子執行緒裡面在run裡面有個new乙個worker類,通過訊號與槽進行通訊。
這裡要注意:
exec(),可以讓子執行緒進入事件迴圈
源**如下:
widget.h
#ifndef widget_h
#define widget_h
#include #include #include #include class worker:public qobject;
class downloadthread:public qthread;
class widget : public qwidget
;#endif // widget_h
main.cpp
#include "widget.h"
widget.cpp
#include "widget.h"
#include #include widget::widget(qwidget *parent)
: qwidget(parent)
widget::~widget()
downloadthread::downloadthread(qobject *receiver, qobject *parent)
:qthread(parent),m_receiver(receiver)
downloadthread::~downloadthread()
void downloadthread::run()
worker::worker(qobject *parent)
:qobject(parent),m_progress(0)
worker::~worker()
void worker::ontimeout()
else
}
QT子執行緒與主線程的訊號槽通訊
最近用qt做乙個伺服器,眾所周知,qt的主線程必須保持暢通,才能重新整理ui。所以,網路通訊端採用新開執行緒的方式。在涉及到使用子執行緒更新ui上的控制項時遇到了點兒麻煩。網上提供了很多同一執行緒不同類間採用訊號槽通訊的方式,但是並不完全適合執行緒間的訊號槽通訊,這主要體現在自定義訊息的傳遞上。首先...
QT 執行緒間通訊
在 qt 系統中,執行著乙個gui 主事件執行緒,這個主線程從視窗系統中獲取事件,並將它們分發到各個元件去處理。在 qthread 類中有一種從非主事件執行緒中將事件提交給乙個物件的方法,也就是 qthread postevent 方法,該方法提供了qt 中的一種 thread safe 的事件提交...
程序間的通訊與執行緒間通訊
程序間通訊 ipc,interprocess communication 是指在不同程序之間傳播或交換資訊。ipc的方式通常有管道 包括無名管道和命名管道 訊息佇列 訊號量 共享儲存 socket streams等。其中 socket和streams支援不同主機上的兩個程序ipc。同一主機上的程序通...