本文共 1859 字,大约阅读时间需要 6 分钟。
QObject定时器
需要函数
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#include class Widget : public QWidget{ Q_OBJECTprivate:virtual void timerEvent( QTimerEvent * event );public: explicit Widget(QWidget *parent = 0);};#endif // WIDGET_H
Widget.cpp:
#include "Widget.h"#include#include Widget::Widget(QWidget *parent) : QWidget(parent){ int TimerID = startTimer(1000); //设置1000ms为单位 qDebug()<<"startTimerID : "< 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#include 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#include 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";}
转载地址:http://pgiyz.baihongyu.com/