1. 程式人生 > >Qt 非阻塞和阻塞延時

Qt 非阻塞和阻塞延時

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 非阻塞和阻塞延時