zoukankan      html  css  js  c++  java
  • Qt 定时器

    1.定时器

    Qt 中的定时器类是QTimer,。QTimer不是一个可见的界面组件。

    QTimer继承自QObject类,其主要属性是interval,该属性设置定时中断的周期,单位为毫秒;QTimer主要的信号是timeout(),在定时中断时发射此信号。

    在程序设计中,如果需要高精度定时器,一般不建议采用Qt的QTimer类,这是因为QTimer定时器优先级较低,其准确性不高。

    目前Qt中的主要采用2种定时器调用方式,一个是QTimer类,另一个是QObject类。

    2.定时器类型

    常量 描述
    Qt::PreciseTimer 0 精确的定时器,尽量保持毫秒精度
    Qt::CoarseTimer 1 粗略的定时器,尽量保持精度在所需的时间间隔5%范围内
    Qt::VeryCoarseTimer 2 很粗略的定时器,只保留完整的第二精度

    QTimer和QObject的定时器事件默认的定时器类型是CoarseTimer。

    3.使用方法

    1.QTimer

    QTimer * timer = new QTimer(this);
    connect(timer,SIGNAL(timeout(),this,SLOT(timerSlot()));
    timer->setTimerType(Qt::PreciseTimer);//如果不设置,默认为CoarseTimer类型
    timer->start();
    
    结束时: timer->stop();

    2.QObject

    timerID = this->startTimer(10000);
    void DemoTimer::timerEvent(QTimerEvent *event)//事件响应函数,当定时器超时后,会进入该函数
    {
       if(event->timerId() == timerID)
       {
            handleTimeout();      
       }    
    }
    
    void DemoTimer::handleTimeout()
    {
       if(timerID)
       {
           killTimer(timerID);
           timerID = 0;
       }  
    }

    其中,int QObject::startTimer(int interval) 为开启定时器函数,参数为毫秒级,当开启成功后会返回这个定时器的ID,并且每隔interval时间后会进入timerEvent函数,直到定时器被杀死。

     

     

     

  • 相关阅读:
    stc单品机的命名规则
    代码导入单片机运行
    openlayers tips
    LeetCode 766. Toeplitz Matrix
    【题集】二叉树的遍历各类题型汇总
    LeetCode 821. Shortest Distance to a Character
    关于C++中vector<vector<int> >的使用
    POJ
    LeetCode#155 Min Stack
    LeetCode#160 Intersection of Two Linked Lists
  • 原文地址:https://www.cnblogs.com/ycbeginner/p/15759929.html
Copyright © 2011-2022 走看看