在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器;一种是使用QTimer类。
一、QObiect类的定时器
QObject是所有Qt对象的基类,它提供了一个基本的定时器。通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符。这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObject::killTimer()结束。
当定时器触发时,应用程序会发送一个QTimerEvent。在事件循环中,处理器按照事件队列的顺序来处理定时器事件。当处理器正忙于其它事件处理时,定时器就不能立即处理。
1、使用流程
(1).h文件中创建定时器
void timerEvent(QTimerEvent *);
(2)定义定时器响应事件
void Butterfly::timerEvent(QTimerEvent *)
{
}
(3)开启定时器
int m_nTimerID;//放到.h文件中
m_nTimerID=startTimer(100);//定义定时器的编号,方便在需要的地方关闭定时器
(4)关闭定时器
killTimer(m_nTimerID);
二、QTimer类定时器
定时器类QTimer提供当定时器触发的时候发射一个信号的定时器,他提供只触发一次的超时事件。
1、使用流程
(1)创建定时器
QTimer *testTimer = newQTimer(this);
(2)定时器和超时信号和槽函数连接起来
connect( testTimer,SIGNAL(timeout()), this, SLOT(testFunction()) );
(3)运行定时器
testTimer->start(1000);
(4)停止运行定时器
if (testTimer->isActive() )
testTimer->stop();
(5)编写定时器槽函数
//槽函数连接
void MainWindow::testFunction()
{
}