在 Qt 4.8 中获取 QInputEvent 被放入 QEventLoop 队列时的时间戳
Posted
技术标签:
【中文标题】在 Qt 4.8 中获取 QInputEvent 被放入 QEventLoop 队列时的时间戳【英文标题】:Get the timestamp when a QInputEvent was put onto the queue of the QEventLoop in Qt 4.8 【发布时间】:2018-10-15 12:36:25 【问题描述】:这个问题与QEventLoop: get time when an event was scheduled密切相关。在这里,我专门询问与“各种事件”相比的输入事件。我也对 Qt 4.8 的解决方案感兴趣。
对于 Qt 5 中的 QInputEvent,有一个可以使用的 timestamp() 成员方法。在 Qt 4.8 中没有这样的方法。当输入事件最初由驱动程序/更深层次的系统“发出”时,是否有任何其他方法来获取时间戳。或者当它最初被 Qt “接收”并放入事件队列时?
【问题讨论】:
【参考方案1】:我查看了嵌入式 Qt 中的不同键盘/输入驱动程序,发现根本没有处理时间戳。所以可用的默认实现并不令人满意。
我设法通过在我的特定平台上实现我自己的逻辑来获取时间戳。在我的情况下,这需要从 dev/input/event 文件中读取并自己创建 QInput 事件。每个键盘输入还包含一个时间戳,这似乎是输入发生时的时间戳。
【讨论】:
以上是关于在 Qt 4.8 中获取 QInputEvent 被放入 QEventLoop 队列时的时间戳的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Linux 上使用 Qt 4.8 从 3Dconnexion SpaceNavigator 获取事件
在 moveToThread() 之后未调用 Qt 4.8 信号/插槽