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 的槽函數,使其執行工作。