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 的槽函数,使其执行工作。
posted @ 2022-03-15 11:54  七星望  阅读(833)  评论(0编辑  收藏  举报