你的浏览器不支持canvas

Qt的延时函数

Date: Author: zhangn

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载请注明来自zhangn的云笔记

阻塞延时

使用QThread类的msleep、sleep、usleep函数

优点:

  • 使用简单,都是静态函数,引入头文件后可以直接调用
  • 精确度高,可以精确到微秒

缺点

  • 这几个函数的作用是强制当前线程休眠,非ui线程倒是无所谓,如果是ui线程,界面会卡死

非阻塞延时

利用Qt的事件循环结合while循环,方法如下

QTime timer = QTime::currentTime().addMSecs(frameTime * 1000);
while (QTime::currentTime() < timer)
	QCoreApplication::processEvents();

优点

  • 非阻塞,可以在ui线程中使用

缺点

  • 实现相对麻烦,需要写好多代码
  • 精度低,只能精确到毫秒

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。