QT 中的多線程---moveToThread 篇


https://zhuanlan.zhihu.com/p/349896858

 

​ QThread 類提供了一個與平台無關的管理線程的方法。一個 QThread 對象管理一個線程。QThread 的執行從 run() 函數的執行開始,在 Qt 自帶的 QThread 類中,run() 函數通過調用 exec() 函數來啟動事件循環機制,並且在線程內部處理 Qt 的事件。在 Qt 中建立線程的主要目的就是為了用線程來處理那些耗時的后台操作,從而讓主界面能及時響應用戶的請求操作。QThread 的使用方法有如下兩種:

  1. QObject::moveToThread()
  2. 繼承 QThread 類

下面通過具體的方法描述和例子來介紹第一種方法,第二種方法在下一篇文章中介紹。

QObject::moveToThread() 方法

方法描述

  1. 定義一個繼承於 QObject 的 worker 類,在 worker 類中定義一個槽函數 doWork(),這個函數中定義線程需要做的工作。 
  2. 在要使用線程的 controller 類中,新建一個 QThread 的對象和 woker 類對象,使用 moveToThread() 方法將 worker 對象的事件循環全部交由 QThread 對象處理。 
  3. 建立相關的信號函數和槽函數進行連接,然后發出信號觸發 QThread 的槽函數,使其執行工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM