一、使用定时器的timeout()信号
关键代码片段如下:
class QtDemo
{
public:
QTimer *timer; //定时器类指针
public slots:
void timeoutslot();//定时器超时时触发的槽函数
void startTimer();
void stopTimer();
};
QtDemo::QtDemo()
{
connect(pushButton1,SIGNAL(clicked()),this,SLOT(startTimer()));// 点击pushButton1启动定时器
connect(pushButton2,SIGNAL(clicked()),this,SLOT(stopTimer()));// 点击pushButton2停止定时器
timer=new QTimer(this); //创建定时器
connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽,定时器timeout时触发该槽
}
void QtDemo::startTimer()
{
timer->start(1000); //启动定时器,超时为1秒
}
void QtDemo::stopTimer()
{
timer->stop(); //停止定时器
}
void QtDemo::timeoutslot()//定时器超时时触发的槽函数
{
//在这里写定时器超时的要做的事情
}
二、重载timerEvent(QTimerEvent *)函数
关键代码片段如下:
class QtDemo2
{
public:
int Timer_id; //定时器ID
public slots:
void mystartTimer();
void mystopTimer();
};
QtDemo2::QtDemo2()
{
connect(pushButton1,SIGNAL(clicked()),this,SLOT(mystartTimer()));// 点击pushButton1启动定时器
connect(pushButton2,SIGNAL(clicked()),this,SLOT(mystopTimer()));// 点击pushButton2停止定时器
}
void QtDemo2::mystartTimer()
{
Timer_id = startTimer(1000); //启动定时器,超时为1秒
}
void QtDemo2::mystopTimer()
{
killTimer(Timer_id); //停止定时器
}
void QtDemo2::timerEvent(QTimerEvent *event)
{
qDebug("timerEvent happen!!! :::%d\n",event->timerId()); //定时器超时时执行这里,期中event->timerId()可以得到超时的那个Timer_id
}
(原文出处:http://www.embedhq.org, 转载请注明出处)