他们有什么不同?
在Qt中,如果我有QPushButton的热键,我可以通过“Alt +?”来制作它,但是如果它是qaction,我可以按“?”仅
答案 0 :(得分:22)
在Windows中,加速键是应用程序全局;例如替代 + F4
快捷键是菜单项或按钮名称的一部分,可以加下划线,并且当该菜单项或按钮可直接使用时可用(不带修饰符)。
来自Microsoft:
热键是用户可以按下以快速执行操作的组合键。例如,用户可以创建一个激活给定窗口的热键,并将其置于z顺序的顶部。
似乎表明热键是系统全局的。
总结一下:
我不知道Qt中的具体含义;为此,请参阅Qt文档。
答案 1 :(得分:10)
Alf's answer对于Windows适用性是正确的。从纯Qt的角度来看,你提到的术语(热键/快捷键/加速器)听起来并不熟悉。
在Qt中,您可以选择自己处理键序列,也可以使用Qt自己的简化方法。无论哪种方式,你必须记住Qt本身针对许多平台,其中一个组合键可能有意义也可能没有意义。经典 Alt + F4 在键盘上有意义,但在移动设备上,您没有 Alt 修饰符或 F4 键。您真正想要的是一种指定通用关闭应用程序快捷方式的方法。此问题成倍增加,因为符号可用,但到达它的键序列可能在其他键盘布局上有所不同。 This section文档提供了一个很好的例子。
Qt使用class QKeySequence
处理此问题。非常聪明的Qt开发人员提供了一种定义常见用户操作的简单方法,这些操作将使用默认为目标平台的组合键。它使用enum QKeySequence::StandardKey
执行此操作,并在关闭应用程序示例中,您可以像这样使用它:
QAction exitAction;
exitAction.setShortcut(QKeySequence(QKeySequence::Quit));
documentation中对此进行了解释。还有另外两个修饰符(shortcutContext()
和softKeyRole()
)可以应用于QActions,以更高级的方式影响它们的应用。
您也可以使用以下内容自由指定自己的快捷方式:
QAction helpAction(tr("&?"));
helpAction.setShortcut(QKeySequence(tr("ALT+?")));
第一行应用(翻译)文本“?”在菜单或按钮上显示为其文本的操作。请注意,问号符号可能不是所有语言中的正确符号,因此翻译方法允许翻译者在需要时指定更合适的符号。 &符号表示当菜单处于活动状态时,紧随其后的字符将成为快捷键。
第二行指定 Alt + ?的(已翻译)快捷方式,在此示例中, Shift 修饰符将由平台处理如果需要。同样,tr()
方法允许翻译者指定更合适的快捷方式(如果可用)。
回应teukkam的评论:
如果你的意思是你只是希望你的按钮可以被击键触发,无论它是否被 Alt 修改,那么你可以做类似的事情:
QPushButton* yourButton; // assign this pointer yourself
yourButton->setText(tr("&Process"));
yourButton->setShortcut(tr("p"));
在此示例中,setText()
中的&符号与上一示例相同,而translate函数的使用方式相同。
setShortcut()
方法只使用字母“p”,因此现在可以使用或不使用 Alt 修饰符。快速浏览文档表明,无论是否使用 Shift 修饰符都可以使用,因为键序列中的字母显然不区分大小写。
此外,P将是一个糟糕的选择,因为它通常被认为是 print 命令。
最后一点,如果您要定义硬编码快捷方式,请确保它们适用于所有目标平台!
答案 2 :(得分:3)
在Windows中:
在给定上下文中执行命令的键盘键或键组合。
多键HotKey ,没有菜单导航限制,也不需要gui元素。
单键HotKey 哪个命令用于激活可见命令控件 (需要gui元素)标题/标有相应的热键字母下划线。
多键HotKey 该命令用于激活命令控件(需要gui元素),无论其可见性如何。