使用QT的线程类的推荐方法是将其作为一个线程的管理类来使用。在这种用法下,QThread类最重要的作用是创建了一个可以承载不同对象在其中运行,并使用QT的信号和槽机制的线程环境。声明了QThread类的线程管理器之后,线程中需要运行的相应对象(必须是QOJBECT)须调用moveToThread函数将其槽函数的运行环境移到此线程管理器管理的线程,然后线程管理器调用start函数,建立子线程,同时开启子线程上的事件循环。这意味着,在此线程中可以有多个对象,同时可以与其他线程利用信号和槽机制进行数据交换。 这是一种面向事件机制的线程实现模式。
使用的一种使用方法是继承QThread,重写run的虚函数。此时继承的线程对象在start函数后将开始运行run函数,run函数运行结束后,线程退出。与前一种使用方法不同的是,run函数中没有调用exec函数,线程不会进入事件循环,无法处理槽函数(但可以发出信号)。
参考文档: