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