Timers cannot be started from another thread

跨线程控制定时器错误

原因在于:如果定时器在构造函数中初始化,则不能跨线程控制定时器的启停。

解决方法:在构造函数中,将定时器初始化为 nullptr ,在调用时再进行真正的初始化。

下面为QT跨线程初始化定时器例子

if(!m_pTimer)
{
	//初始化定时器,跨线程控制定时器,不能在构造函数中初始化
    m_pTimer = new QTimer();
    connect(m_pTimer, &QTimer::timeout, this, &Recorder::slot_TimeGrab);
}

你可能感兴趣的:(qt,qt)