Qt QCoreApplication::事件后优先级无效

Qt QCoreApplication::事件后优先级无效,qt,Qt,我使用Qt::EventPriority::LowEventPriority在事件队列中添加了100多个事件 处理每个事件需要1-10秒 我稍后添加了一个事件,优先级设置为Qt::EventPriority::HighEventPriority 但是,在我的对象的customEvent方法中,我仍然接收那些低优先级的事件。最后一个高优先级事件不会出现,就好像它是以与其他事件相同的低优先级添加的一样 为什么? Qt 5.7,微软Visual C++ 2015,Windows 10。< /P> <

我使用Qt::EventPriority::LowEventPriority在事件队列中添加了100多个事件

处理每个事件需要1-10秒

我稍后添加了一个事件,优先级设置为Qt::EventPriority::HighEventPriority

但是,在我的对象的customEvent方法中,我仍然接收那些低优先级的事件。最后一个高优先级事件不会出现,就好像它是以与其他事件相同的低优先级添加的一样

为什么?


Qt 5.7,微软Visual C++ 2015,Windows 10。< /P> < P>这是设计。事件循环在传递事件时被锁定。在事件循环被锁定时,您发布到该事件循环的任何事件都将在当前事件块交付后追加。

也许您会在处理完所有其他事件后添加高优先级事件。否则,请发布一个小的自包含测试用例来演示这个问题。你说的“已处理”是什么意思?在我添加高优先级事件时,我的代码没有处理所有的事件,甚至一半的事件。@AlexanderDyagilev,你这样做是为了测试吗?或者你假设在应用程序中同时发布100多个长时间处理的事件是可能的?不幸的是,这就是事件循环的设计方式——它将所有可用的已发布事件放在一个批次中,并锁定,直到将它们全部发送。然后,它在循环中使用新事件重复批处理发送。因此,如果您添加了一批100多个事件,它们将被收集以成批发送,这就是您的高优先级事件无法工作的原因。若在实际应用程序中,这些事件并没有批量发布到循环中,那个么它就可以正常工作。