如何避免Qt快捷方式歧义(特别是当快捷方式有不同的上下文时)?

时间:2011-04-01 22:15:01

标签: c++ qt

我有一个应用程序,它将Ctrl + S作为文件菜单中“保存”操作的快捷方式。此操作具有Qt :: WindowShortcut的默认快捷方式上下文。

在这个应用程序中,有一个停靠窗口,其动作也使用快捷键Ctrl + S.此快捷方式具有上下文Qt :: WidgetShortcut。

窗口快捷方式正常。 (当焦点位于我提到的停靠窗口以外的任何地方时按下Ctrl + S时执行。)

小部件快捷方式不起作用。也就是说,如果窗口动作被禁用,那么小部件就可以工作,因为没有歧义。但如果两个操作都已启用,并且焦点位于停靠窗口,则Ctrl + S不执行任何操作。

在我看来,期望在相同的活动快捷方式的情况下,如果一个人拥有比另一个更多的“本地”语境,那将是执行的那个,这是不合理的。我不认为有任何方法可以告诉Qt框架这就是我想要发生的事情吗?或者解决这个问题的一般方法?我可以简单地更改其中一个快捷方式,这样它们就不会模糊不清,但这些都是可本地化和平台相关的,所以我无法保证不会出现其他类似的情况。

1 个答案:

答案 0 :(得分:1)

我有类似的情况,其中两个小部件具有相同的快捷方式(针对两个不同的操作),但只有一个被调用。我能解决这个问题的唯一方法是 1.从两个小部件中的操作中删除快捷方式 2.使用父窗口中的快捷方式创建另一个操作 3.从窗口处理程序调用适当的窗口小部件处理程序。