在主线程下开启了一个子线程,子线程循环执行任务,当主线程给子线程发送信号时,无法触发子线程的信号槽。
子线程代码:
#include "childThread.h"
childThread::childThread()
{
//构造函数
}
hildThread::work()
{
while(true)
{
//do something
}
}
on_sigFromMain()
{
qDebug()<<"recv a signal from Main...";
}
//childThread.h
class childThread : public QObject
{
Q_OBJECT
public:
explicit childThread();
void work();
public slots:
void on_sigFromMain();
};
当主线程发送信号要触发on_sigFromMain()槽函数时,发现无法被触发。
这个时候只需要在子线程的work函数的while内加入
QCoreApplication::processEvents();
即可。修改后的代码如下:
#include "childThread.h"
childThread::childThread()
{
//构造函数
}
hildThread::work()
{
while(true)
{
//do something
QCoreApplication::processEvents();
}
}
on_sigFromMain()
{
qDebug()<<"recv a signal from Main...";
}