一、概述
之前发过一篇,写Qt下定时器的使用,现在另发一遍,感觉这个使用方法挺方便,写在这里与大家共享。
二、代码
首先在头文件中声明一个QTimer类的实例,并创建一个槽函数,这个槽函数是用来执行定时器到达定时以后要执行的操作。
class CABCD : public QObject
{
Q_OBJECT //用到信号槽,这个声明是必须的
public:
CABCD(QObject* parent=0); //构造函数
~CABCD(); //析构函数
public slots:
void slotABCD(); //槽函数
public
QTimer * m_pTimerABCD; //定义一个QTimer类对象m_TimerABCD;
}
在cpp文件中添加如下代码
include "OptFireFore.h"
CABCD::CABCD(QObject* parent) : QObject(parent)
{
m_pTimerABCD = new QTimer(this); //初始化QTimer对象
m_pTimerABCD->start(15000); //启动定时器设置超时时间15秒
connect(m_pTimerABCD, SIGNAL(timeout()), this, SLOT(slotABCD()));
}
void CABCD::slotABCD()
{
qDebug() << "ABCD"; //输出ABCD
}
三、使用的大体流程总结如下:
首先定义一个QTimer类的对象:m_timerABCD,QTimer类对象有一个信号是timeout(),当定时器超时以后会发出timeout()信号。这时我们只要给timeout()信号关联一个槽函数,接收到timeout()信号后,槽函数进行一些列操作。理所当然,要在头文件定义这个slotABCD,并在cpp文件里创建timeout()与slotABCD函数的关联。start(int)也是QTimer对象的函数,意思是启动定时器,并且设置定时器超时时间。例如:start(100)代表超时时间是100ms。
更进一步我们还可以设置定时器的其他属性,比如只执行一次那么只需要添加一句话:m_pTimerABCD.setSingleShot(true);即可。
楼主发帖不容易,如果帮到你请随便评论两句谢谢。