2016-11-18 146 views
0

我正在使用QT,我有一个QAction,我想用Cmd和Plus作为放大的快捷方式。我发现QKeySequence :: ZoomIn将映射到该缩放和其他本地组合键在其他类型的键盘上。我已经使用下面的代码来做到这一点,但是,这并不像我希望的那样正常工作。做这个快捷方式时我做错了什么?

QAction *zoomInAction = new QAction(QIcon("zoominimg.png"),"Zoom in", this); 
zoomInAction->setShortcut(QKeySequence::ZoomIn); 
connect(zoomInAction, SIGNAL(triggered()), this, SLOT(zoomIn())); 

,使用上外接键盘的数字键盘的+键时,但使用它,你必须按shift然后=键使用+键时,快捷有效,快捷不再工作,和zoomIn方法永远不会被调用。

有没有人曾经遇到过这个问题,并知道如何解决?

我在MacOS 10.12上使用Qt 5.7,如果有帮助的话。

回答

0

您体验的行为是通过设计。 Qt只使用standard shortcuts以避免在使用不同的键盘布局时可能发生的任何不明确之处。

An example在Qt的文档提供概括您的问题:

例如,快捷键,Ctrl键加和Ctrl减,经常被用来作为快捷方式在图形应用缩放操作,而这些可以被指定为“ Ctrl +“和”Ctrl + - “。但是,这些快捷键的指定和解释方式取决于键盘布局。挪威键盘用户会注意到+和 - 键在键盘上并不相邻,但仍然可以在不需要按下Shift键的情况下激活这两个快捷键。但是,使用英式键盘的用户需要按住Shift键才能输入+符号,使快捷键与“Ctrl + Shift + =”相同。

虽然有些开发人员可能会诉诸完全指定他们在键盘上使用的所有修饰符来激活快捷方式,但这也会导致不同键盘布局的用户出现意外行为。

例如,使用英式键盘的开发人员可能会决定指定“Ctrl + Shift + =”作为按键顺序,以便创建一个与Ctrl plus相同的快捷方式。但是,需要使用挪威语键盘上的Shift键访问=键,才能实现所需的快捷键Ctrl Shift Shift =(不可能的组合键)。

因此,如果您仍想使用涉及修改器的快捷方式,则除了缺省值之外,您必须自己对其进行编码。通过这样做,您应该记住,硬编码的快捷方式可能无法在其他键盘布局上按预期工作。