2012-02-16 70 views
7

我有一个菜单项的Qaction用于删除我的一个视图中的选定项目。这里是我如何创建的动作:我设置了一个键盘快捷键(删除键),它应该触发delectAct动作。它大部分时间都在工作,但在某些时候停止工作......有人知道为什么捷径会停止工作吗?QAction快捷方式并不总是工作

注意:如果从菜单项中触发它,动作仍然有效。它只是不快捷...

回答

18

您需要的操作添加到窗口小部件,因为它是将小部件倾听关键事件。 假设“本”是一个主窗口,简单地做

addAction(deleteAct); 

请注意,您可以加入同一个动作的多个小部件(这是分离的动作概念的整点)。因此将它添加到主窗口可以将其添加到菜单中。

+0

+1我的上下文菜单快捷方式没有工作,因为我想要的,直到我已经添加到主窗口的行动。 – rendon 2012-08-18 02:34:22

+0

另外,action-> setShortcutContext(...);必须设置,请参阅user362638答案。 – Tob 2016-05-05 13:17:51

+0

不一定;默认的快捷方式是Qt :: WindowShortcut,这就是你想要的原始海报例子。当您按下窗口B中的删除键时,您不希望Delete键删除窗口A中的选定项目。 Qt :: ApplicationShortcut对于应用程序范围内的快捷方式(即应该可以在应用程序的任何窗口中工作的快捷方式)有意义。 – 2016-05-07 08:53:36

6

尝试改变的动作shortcut context,例如:

deleteAct->setShortcutContext(Qt::ApplicationShortcut); 
0

没有看到完整的代码,我会冒险猜测某处它被启用/禁用。确保快捷方式在构造函数中被击中,并且由于可能的设置而不会在其他地方“禁用”。

相关问题