在Qt中实现延迟执行函数,推荐使用QTimer组件。以下是两种实现方式:
- 单次延迟执行(推荐方式)
// 延迟1秒后执行myFunction函数
QTimer::singleShot(1000, this, &MyClass::myFunction);
// 或者使用lambda表达式
QTimer::singleShot(1000, [this](){
// 延迟执行的代码
qDebug() << "Delayed execution";
});
- 重复定时器方式
// 在类声明中
private:
QTimer *timer;
// 初始化定时器
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MyClass::myFunction);
timer->setSingleShot(true); // 设置为单次触发
timer->start(1000); // 1000毫秒后触发
注意事项:
- 时间单位为毫秒(1000ms = 1秒)
- 如果使用lambda表达式,注意捕获上下文的有效性
- 确保目标函数在调用时对象仍然存在(避免悬空指针)
- 定时器默认在对象所属线程运行,GUI操作需在主线程执行
对于需要阻塞等待的场景(不推荐在主线程使用),可以使用QElapsedTimer配合循环,但会冻结界面。通常建议使用异步方式实现延迟操作。
2万+

被折叠的 条评论
为什么被折叠?



