10.QT-定时器
QObject定时器
- 需要头文件#include <QTimerEvent>
需要函数
int QObject::startTimer(int interval); //启动定时器,启动后,就会一直定时触发timerEvent事件,设置定时器间隔时间(单位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"; }
人间有真情,人间有真爱。