【Qt中的定时器】

Qt中定时器问题还是比较简单的,分为2种:
(1)QObject类中的定时器
(2)QTimer类中的

一、QObject类的定时器

QObject是所有Qt对象的基类,这里面有一个基本的定时器。

什么是定时器呢?
就是这个定时器一旦被设置,每隔一段时间就会触发(timerEvent()),直到明确的使用QObject::killTimer()结束。
这里顺便说一下,触发的这个QTimerEvent事件,处理器会按照事件队列的顺序来处理。

了解一下接口:

  • int QObject::startTimer(int interval);

功能:开始一个定时器并返回定时器ID;
若不能创建,则返回0;

参数:间隔时间

  • virtual void QObject::timerEvent(QTimerEvent *event)

功能: 超时事件处理函数,多用于重载;

参数:超时事件

-void QObject::killTimer ( int id )

功能:关闭定时器

参数:定时器的ID

//一些用法举例
m_nTimerId = startTimer(1000);

if ( m_nTimerId != 0 )
    killTimer(m_nTimerId);

二、定时器类QTimer

这个定时器和上面的QObject的定时器功能是一样的,不同的地方在:他默认只提供一次触发超时事件。

用法举例

//创建定时器
QTimer *testTimer = new QTimer(this);
//将定时器超时信号与槽(功能函数)联系起来
connect( testTimer, SIGNAL(timeout()), this, SLOT(testFunction()) );
//开始运行定时器,定时时间间隔为1000ms
testTimer->start(1000);
//停止运行定时器
if ( testTimer->isActive() )
testTimer->stop();

用法举例

定时器的使用非常简单,我们只需要以下几个步骤就可以完成定时器的应用:

1.产生一个定时器

QTimer *time_clock=new QTimer(parent);

2.连接这个定时器的信号和槽,利用定时器的timeout()

connect(time_clock,SIGNAL(timeout()),this,SLOT(slottimedone()));
即定时时间到就会发送timeout()信号,从而触发slottimedone()槽去完成某项事情

3.开始定时器,并设定定时周期

定时器定时有两种:start(int time)和setSingleShot(true)
其中start(int time)是表示每隔time秒就会重启定时器,可以重复触发定时,除非你利用stop()将定时器关掉。
而setSingleShot(true)则是仅仅启动定时器一次
我们工程中常用的是前者。
time_clock->start(2000);

你可能感兴趣的:(Qt)