我在菜单项上有一个Qaction,用于删除我的一个视图中的选定项目。以下是我创建动作的方法:
deleteAct = new QAction( tr("Delete Selected"), this);
deleteAct->setShortcut(QKeySequence::Delete);
connect(deleteAct, SIGNAL(triggered()), this, SLOT(deleteSelected()));
我设置了一个键盘快捷键(Delete键),它应该触发delectAct动作。它大部分时间都有效,但在某些时候它停止工作......有谁知道为什么捷径会停止工作?
注意:如果我从菜单项触发它,动作仍然有效。它只是没有...的快捷方式。
答案 0 :(得分:21)
您需要将操作添加到窗口小部件,因为它是将侦听键事件的窗口小部件。 假设“this”是主窗口,只需执行
addAction(deleteAct);
请注意,您可以将相同的操作添加到多个小部件(这是分离的操作概念的重点)。所以可以将它添加到主窗口和到菜单。
答案 1 :(得分:6)
尝试更改操作的shortcut context,例如:
deleteAct->setShortcutContext(Qt::ApplicationShortcut);
答案 2 :(得分:0)
如果没有看到完整的代码,我就会猜测某个地方是启用/禁用的。确保快捷方式在构造函数中被命中,而不是因为设置而在其他地方“禁用”。
答案 3 :(得分:0)
自QT 5.10起,您可以使用http://doc.qt.io/qt-5/qaction.html#shortcutVisibleInContextMenu-prop属性:
deleteAct->setShortcutVisibleInContextMenu(true);