一般阻塞操作分为两种,一种是阻塞延时操作,另一种是非延阻塞操作,当使用延时阻塞,就类似于Sleep(100):这种的,阻塞式延时会导致主线程界面卡死问题,而非阻塞式延时,如果耗时线程为A,则当使用非阻塞延时时,耗时程序会延时,但是这时主线程就能做另外一件事了
如下:
void sleep(int sectime)
{
QTime dieTime = QTime::currentTime().addMSecs(sectime);
while (QTime::currentTime() < dieTime) {
QCoreApplication::processEvents(QEventLoop::AllEvents, maxtime);
}
}
sectime是延时的时间,一般是毫秒, QCoreApplication::processEvents(QEventLoop::AllEvents, maxtime)
延时期间,主线程可以进行工作了,同时最大时间maxtime设置为100
推荐博客:精灵球Plus介绍_清风徐来Groot的博客-CSDN博客
百度云盘:链接:https://pan.baidu.com/s/11b634VvKMIsGdahyBLpZ3Q 提取码:6666