Qt下事件的默认优先级是什么?它们是否都具有相同的优先级(哪个?),或者其中某些优先级更高?根据文档,“在特殊情况下,一旦窗口系统的事件队列中的所有事件都已处理,超时为0的QTimer就会超时。”这是否仅意味着超时为零的Qtimer产生具有最低优先级的事件?非零超时呢?
答案 0 :(得分:1)
QTimer
的超时时间为零根本不是计时器。这是一个误称。拥有这样的计时器没有任何意义,因此它被重载为一种特殊的结构,可让您在事件队列为空时执行一些代码。它与任何计时器处理代码完全无关,并且由Qt在内部作为特殊情况处理。
默认情况下,由Qt本身产生的所有事件均以默认优先级零(0)进行发布,除非编辑Qt代码,否则无法对其进行更改(这里没有理由)。事件优先级的概念仅在您自己发布事件时才重要,然后您实际上只有两个选择:Qt::HighEventPriority
或大于零的任何优先级,这意味着您的事件将被发布在发布者的事件之前Qt本身。相反,Qt::LowEventPriority
或任何低于零的优先级,意味着您的事件将被张贴在Qt本身发布的所有事件之后。
当然,您自己的事件的相对优先级很重要,例如您自己的优先级为2的事件将在您自己的优先级为1的事件之前排队。但是Qt自己的事件只有优先级为0。