如何阻止/忽略/段比的Qt 4.8某超时旧的丢弃用户输入事件(How to block/ignore

2019-10-29 02:37发布

这个问题可能涉及到这些问题:

  • QEventLoop:当事件被安排得时间
  • 获取时间戳时QInputEvent使用Qt 4.8贴出了QEventLoop的队列

我想,如果检测到用户输入大于一定超时老,如有必要,阻止此类事件。 想象一下场景中的UI不响应,并在主线程挂起几秒钟,用户继续发送输入事件。 这些事件进行排队,然后以一定的延迟处理。 我想抓住这个并能够丢弃/忽略它们。 我知道,这是不可能发生的,因为一个UI应该总是响应和长期的任务应该被移动到工作线程或类似的概念,但我还是希望能够检测到这种罕见的情景。 请注意,当系统本身冻结了几秒钟,可能是由于该系统作为一个整体上的高负担同样会发生。

Answer 1:

我接过来一看入Qt的可用输入驱动嵌入式的默认实现的代码,并决定写我自己的输入概念,以便能够从Linux输入文件中读取的时间戳。 然后我用这些时间戳将它们与当前时间放弃他们,如果他们在很久以前排队比较。

所需要的代码是非常特定平台的,但它的工作对我的方案。 我想,我必须接受我自己的答案,虽然我希望有一个更通用的解决方案。



文章来源: How to block/ignore/discard user input events that are older than a certain timeout in Qt 4.8
标签: c++ qt qt4