参考:
Qt 定时器 (QTimer)的几种使用方法-CSDN博客
QTimer 如何判断QT定时器在工作?-CSDN博客
(1)timeout信号
每隔5秒,timer发射timeout()信号,w执行onTimeout()槽函数。
Widget w;
QTimer timer;
timer.start(5*1000);
QObject::connect(&timer,&QTimer::timeout,&w,&Widget::onTimeout);
void Widget::onTimeout()
{
qDebug()<<"timeout()";
}
结果: 每5秒输出一次"timeout()"
(2)setSingleShot(Bool)
设置为true时,timer只发射一次timeout()信号。
timer.setSingleShot(true);
结果:只输出一次"timeout()";
(3)isActive():判断定时器是否还在工作
当执行stop()后,定时器停止工作。
QTimer timer;
timer.start(5*1000);
qDebug()<<timer.isActive();
timer.stop();
qDebug()<<timer.isActive();
结果:
true
false
(4)设置setSingleShot(true)后,输出完"timeout()"后,定时器停止工作。
timer只发射一次timeout()信号,发出信号后,定时器停止工作。
Widget w;
QTimer timer;
timer.setSingleShot(true);
timer.start(5*1000);
qDebug()<<timer.isActive();
QObject::connect(&timer,&QTimer::timeout,&w,&Widget::onTimeout);
void Widget::onTimeout()
{
qDebug()<<"timeout()";
QTimer * timer=(QTimer *)sender();
qDebug()<<timer->isActive();
}
结果:
true
timeout()
false