转载于:QT 中的多线程---moveToThread 篇 - 知乎 (zhihu.com)
下面通过具体的方法描述和例子来介绍第一种方法,第二种方法在下一篇文章中介绍。
QObject::moveToThread() 方法
方法描述
- 定义一个继承于 QObject 的 worker 类,在 worker 类中定义一个槽函数 doWork(),这个函数中定义线程需要做的工作。
- 在要使用线程的 controller 类中,新建一个 QThread 的对象和 woker 类对象,使用 moveToThread() 方法将 worker 对象的事件循环全部交由 QThread 对象处理。
- 建立相关的信号函数和槽函数进行连接,然后发出信号触发 QThread 的槽函数,使其执行工作。
我的代码没有定义信息和槽函数之间的连接,而是直接在worker类构造的时候就让Timer start,当线程_thread->start();也能实现不发信息就能启动的功能。