【问题标题】:In Qt how can I know which modifier keys are pressed without overriding the key press and release event functions在 Qt 中,我如何知道按下了哪些修改键而不覆盖按键按下和释放事件函数
【发布时间】:2021-03-15 08:52:34
【问题描述】:

我正在编写一个 UI 管理器,当您 ctrl-alt-rclick 小部件时,它允许您编辑小部件。

我已经在顶层窗口中实现了按键和释放功能,以便能够检测 ctrl 和 alt 键的状态。但是,如果另一个窗口或对话框获得焦点,按键事件会转到那里而不是我的事件侦听器,这是非常不稳定的。

我见过的所有其他 GUI 工具包,以及我见过的每一个窗口管理器系统,都允许您随时检查按键的状态,而不是依赖于监听按键按下/释放事件。

我已经深入搜索了 Qt 文档,但找不到任何可以让我简单地检查是否随时按下特定键的功能。

在Qt中,如何在不监控事件的情况下检测键盘按键的状态?

【问题讨论】:

  • 我不明白为什么你需要经常监控键盘。如果您想在 ctrl-alt-right-click 上开始一些操作,那么您可以在收到 mouse click 事件时检查修饰键,对吧?
  • @G.M.我需要经常监控它,因为我找不到任何方法来检查“修改键”。我很想这样做 - 怎么做?另外,感谢您在过去一周左右对我所有问题的所有回复。
  • @G.M.明白了,谢谢 - 它是基础 QInput 类的一个属性,这就是为什么我之前没有看到它:P

标签: qt5 keypress


【解决方案1】:

您在寻找[static] Qt::KeyboardModifiers QGuiApplication::queryKeyboardModifiers() 吗?

【讨论】:

  • 完美,除了我需要确保我拥有的 QApplication 实例是 QGuiApplication 实例。
  • 现在你提到它:有趣的是它是 QGuiApplication 的一部分。有人会假设控制台应用程序也想查询键盘状态。
  • 除了我需要确保我拥有的 QApplication 实例是一个 QGuiApplication 实例 它永远不会是 GUI 应用程序中的其他任何东西 :) 所以这不是问题.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
相关资源
最近更新 更多