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