Qt提供了两种定时器,一种是QObject类的定时器,另一种是QTimer类的定时器。
(1)QObject类的定时器
如果该类直接或间接继承了QObject,就可以使用这个。
通过函数startTimer()来启动,通过killTimer()来结束,通过QTimerEvent来处理定时器事件。
函数原型:
int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
void QObject::killTimer(int id);
void QObject::timerEvent(QTimerEvent * event);
QObject提供的定时器通过startTimer(int interval)启动,该函数启动了一个时间间隔为interval毫秒的定时器,启动成功只返回一个定时器标志符,失败返回0,因为只返回一个标志符,所以无法获得该定时器的对象,它是QObject的成员函数,及不能正常的使用信号与槽,只能通过重载定时器事件处理函数,在里面写定时器触发要做的事:
[virtual protected] void QObject::timerEvent(QTimerEvent *event)
如果有多个定时器,可以通过QTimerEvent::timerId()来获取已经启动的定时器标识符。
该定时器只能通过killTimer(int id)杀死,参数id为之前生成定时器标志符,根据标志符杀死定时器。
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject(QObject *parent = 0);
protected:
//重写定时器事件
void timerEvent(QTimerEvent *event);
private:
//声明定时器ID
int timeID;
};
MyObject::MyObject(QObject *parent)
: QObject(parent)
{
timeID = startTimer(1000);