QT主线程延时或休眠不阻塞主线程.

方案一
//休眠1000毫秒,每隔5毫秒处理所有事件(根据实际情况定义)
int t=1000,n=5;
while(t>0){
     
	t-=n;QThread::msleep(n);
	QCoreApplication::processEvents();
}
方案二
//休眠1000毫秒,每隔5毫秒处理最多100毫秒内的事件(根据实际情况定义)
int t=1000,n=5;
while(t<0){
     
	t--n;QThread::msleep(n);
	QCoreApplication::processEvents(QEventLoop::AllEvents,100);
}
方案三
//休眠1000毫秒,采用计时器(根据实际情况定义);
QTime t;t.start();
while(t.elapsed()<1000){
     
	QThread::msleep(10);
	QCoreApplication::processEvents(QEventLoop::AllEvents,10);
}
方案四
//休眠1000毫秒,采用系统时间判断(根据实际情况定义);
long long t = QDateTime::currentDateTime().toMSecsSinceEpoch();
while(t<QDateTime::currentDateTime().toMSecsSinceEpoch()+1000){
     
	QThread::msleep(10);
	QCoreApplication::processEvents(QEventLoop::AllEvents,10);
}
方案五
//休眠1000毫秒,和方案四一样(根据实际情况定义);
QTime t=QTime::currentTime().addMSecs(1000);
while(QTime::currentTime()<t){
     
	QThread::msleep(10);
	QCoreApplication::processEvents(QEventLoop::AllEvents,10);
}

所以理论上休眠精确度: 五=四 = 三 > 二 > 一 , cpu消耗相反;

以上都是临时写的,可能存在错误

你可能感兴趣的:(QT,qt,c++,安卓,linux,window)