zoukankan      html  css  js  c++  java
  • 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();   //关闭定时器
  • 相关阅读:
    How to build Linux system from kernel to UI layer
    Writing USB driver for Android
    Xposed Framework for Android 8.x Oreo is released (in beta)
    Linux Smartphone Operating Systems You Can Install Today
    Librem 5 Leads New Wave of Open Source Mobile Linux Contenders
    GUADEC: porting GNOME to Android
    Librem 5 – A Security and Privacy Focused Phone
    GNOME and KDE Join Librem 5 Linux Smartphone Party
    Purism计划推出安全开源的Linux Librem 5智能手机
    国产系统之殇:你知道的这些系统都是国外的
  • 原文地址:https://www.cnblogs.com/xingboy/p/14523817.html
Copyright © 2011-2022 走看看