Qt 中透過 moveToThread
方式來實現的多執行緒之間資料互動一般是透過訊號槽來進行的,訊號槽不僅可以用於同一個執行緒中,也可以用於多執行緒之間,當用於多執行緒之間時,其連線方式為 Qt::QueuedConnection
,即佇列連線。
多執行緒之間建立的訊號槽主要為如下兩個:
- 主執行緒傳送訊號:來觸發子執行緒的槽函式;子執行緒接受該訊號:開始執行復雜的槽函式
connect(this, &MainWindow::SigStartDoWorkA, myWork, &MyWork::OnDoWorkA)
- 子執行緒傳送訊號:更新資料或通知槽函式的執行結果,主執行緒接受訊號:重新整理UI或更新資料
connect(myWork, &MyWork::SigFinishDoWorkA, this, &MainWindow::OnGetWorkAResult)
主執行緒和子執行緒之間透過訊號槽進行資料互動時,