QAction 作为 QGraphicsItem 的快捷键
QAction as keyboard shortcut on QGraphicsItem
我想为我的 QGraphicsScene 实现键盘快捷键。我的图形对象派生自 QGraphicItem 和 QObject,因此我可以使用 signal/slot 个连接。
我已经将 QActions 用于上下文菜单,现在我想将一些 QActions 也用作所选项目的键盘快捷键操作。
我的 QGraphicsItems 已通过 setFlag();
启用 ItemIsFocusable
和 ItemIsSelectable
我可以收到 keyPressEvent(QKeyEvent* event)
但在这种情况下我将不得不手动测试 event->key() == Qt::Key_xxx
有什么方法可以自动执行此操作吗?
- 我试图将 QKeyEvent 与 QKeySequence 进行比较,但这不起作用(因为序列可以包含多个键)。
感谢您的帮助
我不完全确定你说的自动是什么意思。我假设您只是想避免手动检查密钥,不幸的是我不确定是否有更简单的方法。
像您正在做的那样抓住 QKeyEvent* event
通常是可行的方法,是的,不幸的是,一旦您举办了活动,您需要确保它符合预期。您可以通过使用位掩码或类似的逻辑操作使代码不那么难看,但通常我在 event->key()
上使用 switch
并且这往往使代码保持可读性。
我想为我的 QGraphicsScene 实现键盘快捷键。我的图形对象派生自 QGraphicItem 和 QObject,因此我可以使用 signal/slot 个连接。
我已经将 QActions 用于上下文菜单,现在我想将一些 QActions 也用作所选项目的键盘快捷键操作。
我的 QGraphicsItems 已通过 setFlag();
ItemIsFocusable
和 ItemIsSelectable
我可以收到 keyPressEvent(QKeyEvent* event)
但在这种情况下我将不得不手动测试 event->key() == Qt::Key_xxx
有什么方法可以自动执行此操作吗?
- 我试图将 QKeyEvent 与 QKeySequence 进行比较,但这不起作用(因为序列可以包含多个键)。
感谢您的帮助
我不完全确定你说的自动是什么意思。我假设您只是想避免手动检查密钥,不幸的是我不确定是否有更简单的方法。
像您正在做的那样抓住 QKeyEvent* event
通常是可行的方法,是的,不幸的是,一旦您举办了活动,您需要确保它符合预期。您可以通过使用位掩码或类似的逻辑操作使代码不那么难看,但通常我在 event->key()
上使用 switch
并且这往往使代码保持可读性。