wsunad 2022-07-18 19:22 采纳率: 0%
浏览 65

qtimer因修改系统时间停止工作问题

qt4.8,因需要会偶尔经常修改系统时间,可是只要修改的时间比当前时间早,比如现在6点设置5点,则定时器停止工作,有人知道怎么解决吗?使用qtimerevent代替呈现一样的现象

  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-07-19 14:53
    关注

    系统时间是核心的东西,所有的程序都依赖它。包括线程的唤醒。所以改了他肯定出乱子
    应用层绝大部分定时器都采用gettimeofday来计算时间, 如果不加以处理也会产生此问题(QTimer受时钟时间发生改变影响)。不论java中的Swing还是Util的Timer,还是qt,最终都是通过检查当前时间和启动时间来判断是不是该fireEvent了。改变时间,当前时间就会变,结果自然变了。
    qtimer定时器虽然是采用的gettimeofday获取的时间,跟sleep同样获取的时钟时间,但是定时器会进行一个系统时间的变化检测。
    解决方式就是定时器采用相对时间,不受系统时间影响。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月18日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?