QAction 作为 QGraphicsItem 的快捷键

QAction as keyboard shortcut on QGraphicsItem

我想为我的 QGraphicsScene 实现键盘快捷键。我的图形对象派生自 QGraphicItem 和 QObject,因此我可以使用 signal/slot 个连接。

我已经将 QActions 用于上下文菜单,现在我想将一些 QActions 也用作所选项目的键盘快捷键操作。

我的 QGraphicsItems 已通过 setFlag();

启用 ItemIsFocusableItemIsSelectable

我可以收到 keyPressEvent(QKeyEvent* event) 但在这种情况下我将不得不手动测试 event->key() == Qt::Key_xxx

有什么方法可以自动执行此操作吗?

感谢您的帮助

我不完全确定你说的自动是什么意思。我假设您只是想避免手动检查密钥,不幸的是我不确定是否有更简单的方法。

像您正在做的那样抓住 QKeyEvent* event 通常是可行的方法,是的,不幸的是,一旦您举办了活动,您需要确保它符合预期。您可以通过使用位掩码或类似的逻辑操作使代码不那么难看,但通常我在 event->key() 上使用 switch 并且这往往使代码保持可读性。