QTimer
顾名思义,此类提供一个计时器,每隔固定时间就会触发一次,执行相应的操作。注意timer的父类销毁时,timer自身也跟着销毁。
基本使用
QTimer* t=new QTimer(parent);
connect(t,SIGNAL(timeout()),handler,SLOT(handle()));//通过连接timer和handler的函数,实现定时触发
t->start(1000);//指定时间间隔并启动timer
//timer还可以只触发一次
t->setSingleStep(true)或QTimer::singleShot(200,handler,SLOT(handle()));
t->stop();//停止timer
t->setTimerType();//设置timer的时间精度
t->isActive();//返回timer是否正在运作
t->remainingTime();//返回距离下一次间隔的剩余时间
t->setInterval();//设置时间间隔,一个是start时无需再指定参数;一个是能在运作时更改时间间隔
t->timerId();//返回一个正在运作的timer的id,当调用setInterval后,id会改变
还可以通过继承QObject,并实现timerEvent接口来实现自定义的timer
class MyTimer:public QObject
{
...
protected:
void timerEvent(QTimerEvent* e) override;
}
MyTimer::MyTimer()
{
int id1=startTimer(1000);
int id2=startTimer(1000);
...//QObject自带startTimer函数,启动一个timer并返回它独一无二的id
}
//每个timer到了时间间隔就会触发此事件,我们通过id来判断是哪个timer到了时间
void MyTimer::timerEvent(QTimerEvent* e)
{
if(e->timerId()==id1)
...//根据id来作相应操作
}
MyTimer::~MyTimer()
{
killTimer(id1);//QObject自带killTimer函数,通过id来停止指定timer
}
线程中的timer