创建一个QObject类
定义QTimer、QThread对象
将QTimer 移动到 QThread内执行
class MyTimer : public QObject
{
Q_OBJECT
public:
MyTimer()
: timerInterval(500)
{
thread = new QThread(this);
timer = new QTimer();
}
~MyTimer()
{
if (timer->isActive())
{
emit stop();
}
}
QTimer* timer;
QThread* thread;
void setInterval(int ti)
{
timerInterval = ti;
}
int timeOutCount = 0;
public slots:
void slotTimeOut()
{
emit timeout();
}
void startTimer()
{
timer->moveToThread(thread);
timer->setInterval(timerInterval);
// 线程内部启动timer
connect(thread, SIGNAL(started()), timer, SLOT(start()));
connect(timer, &QTimer::timeout, this, &MyTimer::slotTimeOut);
connect(this, &MyTimer::stop, timer, &QTimer::stop);
thread->start();
}
void stopTimer()
{
emit stop();
}
signals:
void timeout();
void stop();
};