QAction快捷方式并不总是有效

时间:2012-02-16 21:31:42

标签: c++ qt keyboard-shortcuts action

我在菜单项上有一个Qaction,用于删除我的一个视图中的选定项目。以下是我创建动作的方法:

deleteAct = new QAction( tr("Delete Selected"), this);
deleteAct->setShortcut(QKeySequence::Delete);
connect(deleteAct, SIGNAL(triggered()), this, SLOT(deleteSelected()));  

我设置了一个键盘快捷键(Delete键),它应该触发delectAct动作。它大部分时间都有效,但在某些时候它停止工作......有谁知道为什么捷径会停止工作?

注意:如果我从菜单项触发它,动作仍然有效。它只是没有...的快捷方式。

4 个答案:

答案 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);