QObject定时器
需要函数
int QObject::startTimer(int interval);
//启动定时器,并设置定时器间隔时间(单位ms),启动后返回该定时器ID号.
void QObject::timerEvent(QTimerEvent * event);
//定时器处理函数,需要用户来重写它,如果有多个定时器,可以通过QTimerEvent::timerId()来判断定时器ID处理
void killTimer(int id);
//通过定时器ID号来杀掉某个定时器
示例代码
Widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject>
class Widget : public QWidget
{
Q_OBJECT
private:
virtual void timerEvent( QTimerEvent * event );
public:
explicit Widget(QWidget *parent = 0);
};
#endif // WIDGET_H
Widget.cpp:
#include "Widget.h"
#include <QDebug>
#include <QTimerEvent>
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
int TimerID = startTimer(1000); //设置1000ms为单位
qDebug()<<"startTimerID : "<<TimerID;
}
void Widget::timerEvent(QTimerEvent * event )
{
qDebug()<<"TimerID : "<<event->timerId();
}
QTimer定时器
需要头文件#include <QTimer>
QTimer类定时器支持单次触发和多次触发。
使用QTimer类定时器的步骤:
1. 创建一个QTimer定时器(示例)
QTimer *timer = new QTimer(this);
2. 连接timeout()信号与槽函数(示例)
connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));
3.启动定时器,并设置间隔时间
timer->start (int msec); //单位ms
4.停止定时器
timer->stop();
5.删除定时器
delete timer;
常用函数
void setSingleShot(bool singleShot);
// 设置使能单次触发和多次触发,默认情况为多次触发
bool isActive();
//判断定时器是否运行
bool setInterval ( int msec );
//从新设置间隔时间
示例代码
Widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject>
class Widget : public QWidget
{
Q_OBJECT
QTimer *timer;
private slots:
void time_handler();
public:
explicit Widget(QWidget *parent = 0);
};
#endif // WIDGET_H
Widget.cpp:
#include "Widget.h"
#include <QDebug>
#include <QTimer>
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));
timer->start(1000); //1000ms
}
void Widget::time_handler()
{
qDebug()<<"Timer out";
}