一般的开发软件都有涉及后台数据处理和前端人机交互。
主线程和次线程之间的处理需要确保数据处理和前端交互区分开,从而避免主界面卡顿问题。
多线程有很多种方法,QT中有继承自QThread或QObject等方式,本章节仅介绍 继承QObject的自定义线程类,通过moveToThread方式实现次线程创建处理和调用,该用法也是比较常规的一种方法。
一、次线程创建
我们以创建一个关于时间的次线程为例:创建次线程用于实时获取当前时间,并每隔固定时间(如200ms)发送给主线程,由主界面显示出来。
RealTimeWorker.h
创建时间类RealTimeWorker,继承自QObject
//.h
#include <QObject>
#include <QThread>
#include <QDateTime>
/* Get the real-time and send to main GUI */
class RealTimeWorker: public QObject
{
Q_OBJECT
public:
RealTimeWorker(QObject *parent = 0)
{
// 构造函数中将当前线程通过moveToThread转移到线程m_WorkerThread中进行
this->moveToThread(&m_WorkerThread);
// 线程销毁和线程启动
connect(&m_Worke