QTimer::singleShot

QTimer::singleShot(10, this,SLOT(eventOperation()));

单singleShot,表示它只会触发一次,发出一次信号,然后来执行槽函数。

如果把槽函数设置成eventOperation(),那么当定时器到达时候,就会执行这个函数,在这个函数中定时器又会再次发出信号,然后执行槽函数eventOperation,这样循环往复的,所以这是一个每隔10毫秒就执行一次的循环。一般我们会在线程定时刷新的操作里面使用这个函数。

 

[static] void QTimer::singleShot(int msec, const QObject *receiver, const char *member)

这个静态函数在一个给定时间间隔 msec(毫秒) 之后调用一个槽。

用法1 :
假设类A有个槽函数 function() { }
我们要在10s之后执行它
就可以: QTimer::singleShot(10*1000,this, &A::function());

 

用法2:
实现循环
槽函数中还是singleShot 即:

function(){
        QTimer::singleShot(10*1000,this, &A::function());
    }

但是为了让循环可控,应该加个条件

bool condition = true;
function(){
    if(condition){
        QTimer::singleShot(10*1000,this, &A::function());
    }
}

 

posted @   手磨咖啡  阅读(5413)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2021-03-10 设备接口总汇(含实物图)
点击右上角即可分享
微信分享提示