热键,快捷键和加速键有什么区别?

  1. 他们有什么不同?

  2. 在Qt中,如果我有一个QPushButton的热键,我可以通过“Alt +?”来完成,但是如果是Qaction,我可以按“?” 只要

Solutions Collecting From Web of "热键,快捷键和加速键有什么区别?"

在Windows中, 加速键是应用程序全局; 例如Alt + F4

快捷键是菜单项或按钮的名称的一部分,可以在其中加下划线,并且当该菜单项或按钮可直接使用时可用(无修饰符)。

来自微软:

热键是用户可以按下以快速执行动作的组合键。 例如,用户可以创建一个热键,激活给定的窗口并将其带到z顺序的顶部。

这似乎表明,热键是系统全球。

总结一下:

  • 快捷键=没有修饰符,在菜单中的本地或窗口中的(对于按钮)
  • 加速键=通常带有修饰符,应用程序全局
  • 热键=显然系统全球

我不知道Qt中的具体含义。 为此请参阅Qt文档。

Alf的答案对Windows的适用性是正确的。 您提到的术语(热键/快捷键/加速键)听起来并不熟悉纯粹的Qt。

在Qt中,您可以选择自己处理键序列,也可以使用Qt自己的简化方法。 无论哪种方式,你必须记住,Qt本身的目标是许多平台上的一个关键组合可能会或可能没有意义。 经典的Alt + F4在键盘上是有意义的,但在移动设备上没有Alt修饰符或F4键。 你真正想要的是一种指定通用关闭应用程序快捷方式的方法。 这个问题是倍增的,因为符号可能是可用的,但是到达它的键序列可能在其他键盘布局上是不同的。 这部分文档提供了一个很好的例子。

Qt使用class QKeySequence处理这个class QKeySequence 。 非常聪明的Qt开发人员提供了一种定义普通用户操作的简单方法,这些操作将使用默认目标平台的组合键。 它使用enum QKeySequence::StandardKey并在关闭应用程序的例子,你可以这样使用:

 QAction exitAction; exitAction.setShortcut(QKeySequence(QKeySequence::Quit)); 

这一切都在文档中解释。 还有其他两个修饰符( shortcutContext()softKeyRole() ),可以应用于QActions,这些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将是一个不好的选择,因为它通常被认为是打印命令。

如果你正在定义硬编码的捷径,最后要注意的是,确保它们能在所有目标平台上运行。

在Windows中:

热键

键盘键或在给定上下文中执行命令的键的组合

捷径

多键热键没有菜单导航限制,也不需要gui元素。

ACCESSKEY

单键热键这个命令是激活一个可见的命令控件 (需要gui元素),这个命令控件是用相应的热键字母标注的。

加速键

多键热键这个命令是激活一个命令控件 (需要gui元素),而不管它的可见性如何。