Qt的QThread类提供了两种多线程的实现方式,一种是直接继承自QThread,把耗时的操作放在重写的run()函数中去执行,调用start()函数,就开始执行run()函数中的程序,调用stop()结束线程的执行。一般有无限循环的耗时操作会采用这种处理方式,例如:可以在run()函数中进行设备音视频的采集操作。这种方式的应用场景较少,在此就不作为重点讲解了。
重点说一下另一种,采用moveToThread方式实现多线程的方式。创建步骤如下:
- 添加一个类,继承自QObject,例如类名为A
- 在A类中添加槽函数,将耗时的操作放在槽函数中进行处理
- 添加如下代码:
A *a = new A();
QThread *thread = new QThread()