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