在QT5中,我们有一个专门的计时器类,QTimer,我们可以利用它完成一些关于定时的操作,实例如下:
#include <QTimer>
QTimer* timer = new QTimer();
timer->start(value); //以毫秒为单位
QObject::connect(timer,&QTimer::timeout,receiver,&slot); //时间结束,发送timeout信号
void slot()
{
timer->stop(); //停止计时器
//do something
}
在我们定时时间结束的时候,我们需要手动停止timer,不然他会不断发送出timeout这个信号,同时,我们需要注意,在做连接函数之前,我们需要存在这个timer的实例,不然会导致程序崩溃,当然我们也可以不需要实例化timer,而是使用QTimer的静态方法,直接起动定时,一下是QT文档中的一个例子:
#include <QApplication>
#include <QTimer>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTimer::singleShot(600000, &app, SLOT(quit())); //使用静态方法,在600秒之后退出程序
...
return app.exec();
}
我们可以在一个程序之中使用多个timer,每一个timer都是有着自己独自的timerId,和window进程的pid类似,我们可以利用timerEvent来处理多个timer:
void timerEvent(QTimerEvent* event)
{
if(event->timerId() == timerId) //使用if来判断是那个timer发出的信号
{
// do something
}
}