【问题标题】:What am I doing wrong when making this shortcut?制作此快捷方式时我做错了什么?
【发布时间】:2016-11-18 16:32:47
【问题描述】:

我正在使用 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。

【问题讨论】:

    标签: macos qt shortcut qaction qt5.7


    【解决方案1】:

    您体验到的行为是设计使然。 Qt 仅使用standard shortcuts 以避免在使用不同键盘布局时可能发生的任何歧义。

    Qt 文档中提供的An example 总结了您的问题:

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

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

    例如,使用英式键盘的开发人员可能会决定将“Ctrl+Shift+=”指定为键序列,以便创建一个与 Ctrl plus 的行为方式相同的快捷键。但是,= 键需要使用挪威语键盘上的 Shift 键来访问,从而使所需的快捷键有效地 Ctrl Shift Shift = (不可能的组合键)。

    因此,如果您仍然想使用涉及Shift 修饰符的快捷方式,除了默认的,您还必须自己编写代码。这样做时,您应该记住,您的硬编码快捷键在其他键盘布局上可能无法按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 2019-12-21
      • 1970-01-01
      • 2019-07-21
      • 2012-07-07
      相关资源
      最近更新 更多