//只能在主线程中调用,在子线程中调用,会有可能出现崩溃
static void Sleep(int ms)
{
//QTime dieTime = QTime::currentTime().addMSecs(ms);
//while (QTime::currentTime() < dieTime)
// QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
QEventLoop eventloop;
QTimer::singleShot(ms, &eventloop, SLOT(quit()));
eventloop.exec();
/* QElapsedTimer etimer;
etimer.start();
while (etimer.elapsed() < ms)
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);*/
}
//可是实现延迟效果,但是会增加CPU资源消耗
static void Suspend(int ms)
{
QDateTime time = QDateTime::currentDateTime();
QDateTime nowtime;
do {
nowtime = QDateTime::currentDateTime();
} while (time.msecsTo(nowtime) <= ms);
}
//在子线程中可以使用,但这个会导致信号和槽无法使用
QThread::Sleep(1);
QThread::mSleep(100);
//还有一些std下的Sleep,查看Qt源码,其实就是QThread::Sleep系列
Qt延迟函数
最新推荐文章于 2024-05-29 08:47:41 发布