QT 中的多執行緒---moveToThread 篇
阿新 • • 發佈:2022-03-15
https://zhuanlan.zhihu.com/p/349896858
QThread 類提供了一個與平臺無關的管理執行緒的方法。一個 QThread 物件管理一個執行緒。QThread 的執行從 run() 函式的執行開始,在 Qt 自帶的 QThread 類中,run() 函式通過呼叫 exec() 函式來啟動事件迴圈機制,並且線上程內部處理 Qt 的事件。在 Qt 中建立執行緒的主要目的就是為了用執行緒來處理那些耗時的後臺操作,從而讓主介面能及時響應使用者的請求操作。QThread 的使用方法有如下兩種:
- QObject::moveToThread()
- 繼承 QThread 類
下面通過具體的方法描述和例子來介紹第一種方法,第二種方法在下一篇文章中介紹。
QObject::moveToThread() 方法
方法描述
- 定義一個繼承於 QObject 的 worker 類,在 worker 類中定義一個槽函式 doWork(),這個函式中定義執行緒需要做的工作。
- 在要使用執行緒的 controller 類中,新建一個 QThread 的物件和 woker 類物件,使用 moveToThread() 方法將 worker 物件的事件迴圈全部交由 QThread 物件處理。
- 建立相關的訊號函式和槽函式進行連線,然後發出訊號觸發 QThread 的槽函式,使其執行工作。