• 【Qt之QTimer】使用及技巧


    简介

    QTimer是Qt中的定时器类,用于执行定时操作,如在一段时间间隔后触发某个槽函数或执行特定的代码。它提供了灵活的定时功能,可以用于处理各种时间相关的任务。它是基于Qt的事件循环机制工作的。

    主要函数说明

    • 构造函数:

      • QTimer(QObject *parent = nullptr)
    • 定时器控制函数:

      • void start(int msec):启动定时器,设置时间间隔为msec毫秒。
      • void stop():停止定时器,即不再触发定时事件。
    • 定时器状态函数:

      • bool isActive() const:判断定时器是否处于活动状态。
    • 定时器信号与槽函数:

      • void timeout():定时器触发的信号,可以连接到槽函数处理定时事件。

    除了上述函数,QTimer还有一个singleShot()函数,它提供了一个简单的只有一次定时的功能。

    用法及使用技巧

    1. 创建定时器对象:

      QTimer *timer = new QTimer(parent);
      
      • 1
    2. 设置定时器的开始时间和时间间隔:

      timer->start(1000);  // 每隔1秒触发一次定时器事件
      
      • 1
    3. 处理定时器触发的事件:

      connect(timer, &QTimer::timeout, []() {
          // 定时事件处理代码
      });
      
      • 1
      • 2
      • 3
    4. 停止定时器:

      timer->stop();  // 停止定时器
      
      • 1

    示例

    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[]) {
        QApplication app(argc, argv);
    
        QTimer timer;
        timer.start(1000);  // 每隔1秒触发一次定时器事件
    
        QObject::connect(&timer, &QTimer::timeout, []() {
            qDebug() << "Timer triggered!";
        });
    
        return app.exec();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    解释

    上述代码使用QTimer创建定时器的基本流程。通过调用start函数设置定时器的时间间隔,并通过timeout信号连接槽函数来处理定时事件。定时器每隔1秒触发一次,槽函数会输出一条调试信息。

    结论

    QTimer是Qt中用于实现定时操作的类,提供了简单而灵活的定时功能。
    通过启动定时器、设置定时器时间间隔,并连接相应的信号与槽函数,可以实现在特定时间间隔内触发特定的操作。
    QTimer适用于各种需要定时触发功能的场景,例如定时更新UI、定时发送网络请求、定时刷新数据等。
    简化了时间相关任务的处理,为开发者提供了更多便利。

    tips

    学以致用,之后会使用QTimer类及此前发布的QMainWindow、QDialog、QPushButton、QLabel等类,实现一个抽奖程序。

  • 相关阅读:
    Prometheus系列第十篇一核心之micrometer源码分析一micrometer-registry-prometheus核心实现
    我的学习方法论
    【AI】PyTorch入门(二):训练与预测
    基础架构之Gitlab Runner
    Springboot与RestTemplate
    【STM32】存储器和位带映射(bit band mapping)
    ceph存储快速部署
    集成学习(随机森林)
    《代码之丑》学习总结
    .Net开发——EFCore
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/133722476