Qt 中多執行緒對應的訊號槽

Jeffxue發表於2024-04-25

Qt 中透過 moveToThread 方式來實現的多執行緒之間資料互動一般是透過訊號槽來進行的,訊號槽不僅可以用於同一個執行緒中,也可以用於多執行緒之間,當用於多執行緒之間時,其連線方式為 Qt::QueuedConnection ,即佇列連線。
多執行緒之間建立的訊號槽主要為如下兩個:

  • 主執行緒傳送訊號:來觸發子執行緒的槽函式;子執行緒接受該訊號:開始執行復雜的槽函式
    connect(this, &MainWindow::SigStartDoWorkA, myWork, &MyWork::OnDoWorkA)
  • 子執行緒傳送訊號:更新資料或通知槽函式的執行結果,主執行緒接受訊號:重新整理UI或更新資料
    connect(myWork, &MyWork::SigFinishDoWorkA, this, &MainWindow::OnGetWorkAResult)

主執行緒和子執行緒之間透過訊號槽進行資料互動時,

相關文章