参考:
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