Qt的延时函数 实现精准延时(转)

void QUIHelper::delay(int msec)
{ // 这个最准
/*非阻塞方式延时,现在很多人推荐的方法*/
QEventLoop loop;
QTimer::singleShot(msec, &loop, SLOT(quit()));
loop.exec();
}

void QUIHelper::deferred(int msec)
{ // 这个最准
QTimer timer;
timer.setTimerType(Qt::PreciseTimer);
timer.start(msec);
while(timer.remainingTime() > 0)
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
}

void QUIHelper::sleep(int msec)
{
//非阻塞方式延时,不会卡住主界面
if (msec <= 0) {
return;
}

//#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
// QThread::msleep(msec);
//#else
QTime endTime = QTime::currentTime().addMSecs(msec);
while (QTime::currentTime() < endTime) {
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
//#endif
}

 

https://blog.csdn.net/weixin_41882459/article/details/139282904

posted on 2024-05-29 16:44  xihong  阅读(137)  评论(0编辑  收藏  举报

导航