Qt 非阻塞和阻塞延時
阿新 • • 發佈:2018-11-30
ecs ati ddms cat 應該 oid 名稱 set 情況
一般情況下,延時大概分為兩類,一個是非阻塞延時,一個是阻塞延時,但從名稱上應該都可以看出來具體的含義,下面針對這兩類延時方法,做一個具體的說明和代碼實現:
一、關於Qt實現非阻塞延時的方法:
void QSleepTimeSet::Delay_MSec(unsigned int msec)
{
QTime _Timer = QTime::currentTime().addMSecs(msec);
while( QTime::currentTime() < _Timer )
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
其中的msec為需要延時的毫秒數,例如,你要實現5秒延時,則msec的值就是 :5000
二、關於Qt中的阻塞延時實現方法:
void QSleepTimeSet::Delay_MSec_Suspend(unsigned int msec)
{
QTime _Timer = QTime::currentTime();
QTime _NowTimer;
do{
_NowTimer=QTime::currentTime();
}while (_Timer.msecsTo(_NowTimer)<=msec);
}
其中的msec為需要延時的毫秒數,例如,你要實現5秒延時,則msec的值就是 :5000
Qt 非阻塞和阻塞延時