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的异步编程框架,它可以在不阻塞当前线程的情况下执行耗时操作

相关推荐
豐儀麟阁贵2 分钟前
6.2 Object类
java·开发语言·python
MichaelIp2 分钟前
Python同步vs异步性能对比实验-2
开发语言·python·性能优化·可用性测试
white-persist15 分钟前
二进制movl及CTF逆向GDB解析:Python(env)环境下dbg从原理到实战
linux·服务器·开发语言·python·网络安全·信息可视化·系统安全
脏脏a16 分钟前
类和对象(下):初始化列表、静态成员与友元深度解析
开发语言·c++
lkbhua莱克瓦2417 分钟前
Java进阶——集合进阶(MAP)
java·开发语言·笔记·github·学习方法·map
代码狂想家18 分钟前
Rust 命令行密码管理器工具开发
开发语言·rust·php
u01196082321 分钟前
java 不可变集合讲解
java·开发语言
翔云 OCR API28 分钟前
NFC护照鉴伪查验流程解析-ICAO9303护照真伪查验接口技术方案
开发语言·人工智能·python·计算机视觉·ocr
2501_9411116828 分钟前
模板编译期哈希计算
开发语言·c++·算法