关于在Qt里让程序休眠一段时间的方法总结

时间:2021-01-01 15:25:59

论坛上不时见到有人问:

  1. Qt 为什么没有提供跨平台的 sleep 函数?
  2. 使用平台相关的 Sleep 或 nanosleep 以后,界面为什么没有反应?
  3. QThread 中提供了protected 权限的 sleep 函数,如何用到主线程中?
  4. 使用 QTest 中的 qSleep,在windows下如何隐藏控制台?

这些问题其实归结为一点:在主线程中使用这些函数是一种错误,这会直接导致界面无法刷新,用户与程序无法交互。

Qt不提供,是因为你不需要在主线程中使用 sleep 函数。

如何让程序等待一段时间QTime

 

QTime t; t.start(); while(t.elapsed()<1000);

这种死循环也是一种常见错误用法。但改成正确的还是比较简单的:

 

QTime t; t.start(); while(t.elapsed()<1000) QCoreApplication::processEvents();

不停地处理事件,以使得程序保持响应。


Fr:http://blog.chinaunix.net/uid-25806493-id-3338960.html