有些时候,我们需要程序延时一会儿:
这里提供四种方法:
1、多线程程序使用QThread::sleep()
或者QThread::msleep()
或QThread::usleep()
或QThread::wait()
进行延时处理。Sleep不会释放对象锁,其他线程无法访问对象,因此会阻塞线程;而Wait会释放对象锁,使得其他线程能够访问该对象。
2、自定义延时函数:
使用QEventLoop
void Widget::Sleep(int msec)
{
QTime dieTime = QTime::currentTime().addMSecs(msec);
while( QTime::currentTime() < dieTime )
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
传入参数msec
,使程序延时msec
毫秒。这种方法不会阻塞当前线程,尤其适合Qt的单线程带UI程序,或者UI线程,因为线程阻塞时,很明显的现象就是UI卡死。当然,你也可以更改addMSecs
为addSecs
使程序延时msec
秒。
如果去掉QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
可以延时,但也会阻塞线程
QCoreApplication:
转载:https://blog.csdn.net/qq_40194498/article/details/80063960
查看评论