QTimer优先级高于窗口系统事件

QTimer优先级高于窗口系统事件,qt,timer,Qt,Timer,我已经用Qt创建了一个GUI程序,其中包含几个短时间间隔的计时器。另一个计时器也用于测量实现的计时器超时频率 这里的问题是,过于频繁地更新GUI会使CPU对计时器的关注度降低,因此,如果计时器的间隔较短且GUI更新频繁,则计时器的行为不会像预期的那样,除非我以某种方式隐藏窗口的更新部分或降低更新的频率 将基于计时器的部分代码移动到另一个线程中并不容易,因为计时器已经在基于QWidget的对象中实现,而这些对象不允许移动到另一个线程中 我的问题是,这是否可能降低窗口系统事件相对于QTimer的优先

我已经用Qt创建了一个GUI程序,其中包含几个短时间间隔的计时器。另一个计时器也用于测量实现的计时器超时频率

这里的问题是,过于频繁地更新GUI会使CPU对计时器的关注度降低,因此,如果计时器的间隔较短且GUI更新频繁,则计时器的行为不会像预期的那样,除非我以某种方式隐藏窗口的更新部分或降低更新的频率

将基于计时器的部分代码移动到另一个线程中并不容易,因为计时器已经在基于QWidget的对象中实现,而这些对象不允许移动到另一个线程中

我的问题是,这是否可能降低窗口系统事件相对于QTimer的优先级?因此,它可能会更多地关注GUI更新时的计时器超时

过于频繁地更新GUI会使CPU对计时器的关注度降低

这简直是胡说八道

计时器事件在GUI线程上运行,事件只是按顺序处理。没有优先级,因为当GUI重新绘制或其他事件处理发生时,该线程正忙。控件必须返回事件循环以处理计时器事件。没有抢占,也不可能有抢占,因为无抢占、运行到完成处理程序是事件驱动GUI的定义特性。如果计时器可以抢占GUI代码,一切都会中断:您将基本上包括对GUI对象的多线程访问

您可能应该在不同的线程中运行这些计时器,或者重新评估如何处理您的问题

将基于计时器的部分代码移动到另一个线程中并不容易,因为计时器已经在基于QWidget的对象中实现了

嗯,这就是设计错误的地方,你必须修正它

过于频繁地更新GUI会使CPU对计时器的关注度降低

这简直是胡说八道

计时器事件在GUI线程上运行,事件只是按顺序处理。没有优先级,因为当GUI重新绘制或其他事件处理发生时,该线程正忙。控件必须返回事件循环以处理计时器事件。没有抢占,也不可能有抢占,因为无抢占、运行到完成处理程序是事件驱动GUI的定义特性。如果计时器可以抢占GUI代码,一切都会中断:您将基本上包括对GUI对象的多线程访问

您可能应该在不同的线程中运行这些计时器,或者重新评估如何处理您的问题

将基于计时器的部分代码移动到另一个线程中并不容易,因为计时器已经在基于QWidget的对象中实现了


嗯,这就是设计错误的地方,你必须修复它。

你看过文档的这一部分了吗?是的@MrEricSir,但这并不能解决问题,因为这与精确性无关。你看了文档的这一部分了吗?是的@MrEricSir,但这不能解决问题,因为这与精度无关是的,我实际上已经将计时器移动到另一个线程中,它们工作得很好。是的,我实际上已经将计时器移动到另一个线程中,它们工作得很好。