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());
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM