如何 block/ignore/discard 用户输入早于 Qt 4.8 中特定超时的事件
How to block/ignore/discard user input events that are older than a certain timeout in Qt 4.8
这个问题可能与这些问题有关:
- QEventLoop: get time when an event was scheduled
我想检测用户输入是否早于某个超时时间并在必要时阻止此类事件。想象一下 UI 没有响应并在主线程中挂起几秒钟并且用户不断发送输入事件的场景。这些事件被排队,然后以一定的延迟进行处理。我想抓住这个并能够 discard/ignore 他们。我知道这不应该发生,因为 UI 应该始终响应并且长任务应该转移到工作线程或类似的概念,但我仍然希望能够检测到这种罕见的情况。请注意,当系统本身冻结几秒钟时可能会发生同样的情况,这可能是由于整个系统的负担过重。
我查看了嵌入式 Qt 中可用输入驱动程序的默认实现代码,并决定编写我自己的输入概念,以便能够从 Linux 输入文件中读取时间戳。然后,我使用这些时间戳将它们与当前时间进行比较,如果它们排队时间太长,则将它们丢弃。
所需的代码非常特定于平台,但它适用于我的场景。我想我必须接受自己的答案,尽管我曾希望有一个更通用的解决方案。
这个问题可能与这些问题有关:
- QEventLoop: get time when an event was scheduled
我想检测用户输入是否早于某个超时时间并在必要时阻止此类事件。想象一下 UI 没有响应并在主线程中挂起几秒钟并且用户不断发送输入事件的场景。这些事件被排队,然后以一定的延迟进行处理。我想抓住这个并能够 discard/ignore 他们。我知道这不应该发生,因为 UI 应该始终响应并且长任务应该转移到工作线程或类似的概念,但我仍然希望能够检测到这种罕见的情况。请注意,当系统本身冻结几秒钟时可能会发生同样的情况,这可能是由于整个系统的负担过重。
我查看了嵌入式 Qt 中可用输入驱动程序的默认实现代码,并决定编写我自己的输入概念,以便能够从 Linux 输入文件中读取时间戳。然后,我使用这些时间戳将它们与当前时间进行比较,如果它们排队时间太长,则将它们丢弃。
所需的代码非常特定于平台,但它适用于我的场景。我想我必须接受自己的答案,尽管我曾希望有一个更通用的解决方案。