QT 下使用定时器

  定时器是用来处理周期性事件的一种对象,类似于硬件定时器。例如设置一个定时器的定时周期为 1000 毫秒,那么每 1000 毫秒就会发射定时器的 timeout() 信号,在信号关联的槽函数里就可以做相应的处理。
  Qt 中的定时器类是 QTimer。QTimer 不是一个可见的界面组件,在 UI 设计器的组件面板里找不到它。定时器的主要类的QTimer 类,其主要的属性是 interval,是定时中断的周期,单位毫秒。QTimer 主要的信号是 timeout(),在定时中断时发射此信号,要想在定时中断里做出响应,这就需要编写 timeout() 信号的槽函数。下面是窗口类中增加的定义(省略了其他不相关的定义):


#include <QTimer>
class MainWindow : public QMainWindow
{
  private slots:
      void MyTimeout () ; //定时溢出处理槽函数
  private:
      QTimer *fTimer;    //定时器
};

  然后新建定时器,建议在你程序初始化的时候新建,避免多次新建定时器类和多次链接信号槽。

fTimer=new QTimer(this);  //新建定时器类
/*把定时器与信号槽链接,注意不要多次调用,你每调用一次就会多创建一次信号槽链接,例如调用了两次,当第一个信号槽链接停止时,第二个定时器信号槽链接还会继续运行,就需要再停止一次定时器*/
connect(fTimer,SIGNAL(timeout()),this,SLOT(MyTimeout()));

  接着在你需要启动定时器的位置调用启动函数启动。

fTimer->stop();         //启动前停止定时器,避免前面有未关闭的定时器
fTimer->start (10) ;    //设置定时周期,单位:毫秒

  然后编写你的定时器的信号槽代码,这里的代码是定时器定时时间到了的时候就会执行的代码。

void MainWindow::MyTimeout()
{//定时器中断响应    
}

  最后在你需要关闭定时器的位置,调用关闭函数,关闭定时器。

fTimer->stop();   //关闭定时器
原文地址:https://www.cnblogs.com/xingboy/p/14523817.html