Qt中的延时

单次触发延时

单次触发延时是指定时器在指定的延时后触发一次,然后自动停止。这种方式非常适合只需要延时执行一次操作的场景。

cpp 复制代码
#include <QTimer>
#include <QObject>

class MyClass : public QObject {
    Q_OBJECT
public:
    MyClass() {
        QTimer::singleShot(1000, this, SLOT(onTimeout()));
    }

public slots:
    void onTimeout() {
        // 延时后的操作
    }
};
周期性触发延时

周期性触发延时是指定时器每隔一定的时间间隔就触发一次,直到显式停止。这种方式适合需要周期性执行操作的场景。

cpp 复制代码
#include <QTimer>
#include <QObject>

class MyClass : public QObject {
    Q_OBJECT
    QTimer *timer;
public:
    MyClass() {
        timer = new QTimer(this);
        connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
        timer->start(1000); // 每1000ms触发一次
    }

    ~MyClass() {
        if (timer) {
            timer->stop();
            delete timer;
        }
    }

public slots:
    void onTimeout() {
        // 延时后的操作
    }
};

QEventLoop是Qt的事件循环类,它也可以用来实现延时功能。这种方法适合于需要在延时期间阻塞当前线程的场景。

QtConcurrent是Qt的异步编程框架,它可以在不阻塞当前线程的情况下执行耗时操作

相关推荐
VBA633734 分钟前
VBA即用型代码手册:利用函数保存为PDF文件UseFunctionSaveAsPDF
开发语言
say_fall36 分钟前
C语言编程实战:每日刷题 - day2
c语言·开发语言·学习
上去我就QWER2 小时前
Qt快捷键“魔法师”:QKeySequence
开发语言·c++·qt
Pluto_CSND4 小时前
Java中的静态代理与动态代理(Proxy.newProxyInstance)
java·开发语言
惊讶的猫6 小时前
LSTM论文解读
开发语言·python
獨枭6 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
国服第二切图仔7 小时前
Rust开发之Trait 定义通用行为——实现形状面积计算系统
开发语言·网络·rust
mjhcsp7 小时前
C++ 循环结构:控制程序重复执行的核心机制
开发语言·c++·算法
A阳俊yi7 小时前
Spring Data JPA
java·开发语言