QTimer

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值