当前位置:   article > 正文

QT 定时器学习_qt关闭定时器

qt关闭定时器

定时器在编程中经常要用到,有必要学习一下,记记笔记!

Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。

1、QObject中的定时器的使用,需要用到三个函数

int QObject::startTimer ( int interval ) ;          // 开启定时器并设定间隔,返回定时器ID

void QObject::timerEvent ( QTimerEvent * event );     // 定时器到时处理函数

void QObject::killTimer ( int id );             // 关闭定时器

2、使用QTimer定时器类(可以使用信号与槽)

QTimer *timer = new QTimer(this);              // 设置定时器

connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));   // 连接定时器到时槽函数

void QTimer::start ( int msec );                // 开启定时器并设定间隔

void QTimer::stop();                    // 关闭定时器

关于定时器精度:

int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);

void QTimer::setTimerType(Qt::TimerType atype);

Qt Assitant中的原文如下:

enum Qt::TimerType

The timer type indicates how accurate a timer can be.

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

QTimerDisplay.h

  1. #ifndef QTIMERDISPLAY_H
  2. #define QTIMERDISPLAY_H
  3. #include <QObject>
  4. #include <QTimer>
  5. #include <QTimerEvent>
  6. #include <QDebug>
  7. class QTimerDisplay : public QObject
  8. {
  9.     Q_OBJECT
  10. public:
  11.     explicit QTimerDisplay(QObject *parent = nullptr);
  12. protected:
  13.     // ![0]
  14.     virtual void timerEvent(QTimerEvent *event);
  15.     // ![0]
  16. signals:
  17. public slots:
  18.     // ![1]
  19.     void onTimeout();
  20.     // ![1]
  21. private:
  22.     // ![0]
  23.     int     m_nTimerID;
  24.     // ![0]
  25.     // ![1]
  26.     QTimer  *m_pTimer;
  27.     // ![1]
  28. };
  29. #endif // QTIMERDISPLAY_H

QTimerDisplay.cpp

  1. #include "qtimerdisplay.h"
  2. #define TIMER_TIMEOUT   (2*1000)
  3. QTimerDisplay::QTimerDisplay(QObject *parent) : QObject(parent)
  4. {
  5.     // ![0]
  6.     m_nTimerID = startTimer(TIMER_TIMEOUT);
  7.     // ![0]
  8.     // ![1]
  9.     m_pTimer = new QTimer(this);
  10.     connect(m_pTimer, SIGNAL(timeout()), this, SLOT(onTimeout()));
  11.     m_pTimer->start(1000);
  12.     // ![1]
  13. }
  14. // ![0]
  15. void QTimerDisplay::timerEvent(QTimerEvent *event)
  16. {
  17.     if(event->timerId() == m_nTimerID)
  18.     {
  19.         qDebug() << "Timer ID:" << event->timerId();
  20.     }
  21. }
  22. // ![0]
  23. // ![1]
  24. void QTimerDisplay::onTimeout()
  25. {
  26.     qDebug() << "Timer is out!";
  27. }
  28. // ![1]

 

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/115064
推荐阅读
相关标签
  

闽ICP备14008679号