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

use*_*674 21 c++ windows qt

  1. 他们有什么不同?

  2. 在Qt中,如果我有QPushButton的热键,我可以通过"Alt +?"来制作它,但是如果它是qaction,我可以按"?" 只要

Che*_*Alf 23

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

快捷键是菜单项或按钮,在那里它可以被加下划线的名称的一部分,并且是可用的(不改性剂)时的菜单项或按钮是直接可用.

来自微软:

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

这似乎表明热键是系统全局的.

总结一下:

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

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

  • @TuyenTk:显然,API提供了三种不同的热键(通过`WM_SETHOTKEY`的全局和线程,以及由`RegisterHotKey`设置的那些),并且在普通Windows加速器和菜单快捷方式之上,所有这些都是非常多余的。我怀疑微软内部存在一些NIH综合征,在这里未发明:我们必须制造麻烦!然后最后一个人真的不能真正依赖其中的任何一个,甚至不能建立似乎有效的方法,因为可以随意删除它(就像Microsoft对HTML + Time所做的那样,突然所有使用该方法的应用程序都停止了工作)。 (2认同)

Sam*_*mer 11

Alf的答案对于Windows适用性是正确的.从纯Qt的角度来看,你提到的术语(热键/快捷键/加速器)听起来并不熟悉.

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

Qt处理这个问题class QKeySequence.非常聪明的Qt开发人员提供了一种定义常见用户操作的简单方法,这些操作将使用默认为目标平台的组合键.它使用enum QKeySequence::StandardKey并在关闭应用程序示例时执行此操作,您可以像这样使用它:

QAction exitAction;
exitAction.setShortcut(QKeySequence(QKeySequence::Quit));
Run Code Online (Sandbox Code Playgroud)

这些都在文档中解释.还有另外两个修饰符(shortcutContext()softKeyRole())可以应用于QActions,以更高级的方式影响它们的应用.

您也可以使用以下内容自由分配自己的快捷方式:

QAction helpAction(tr("&?"));
helpAction.setShortcut(QKeySequence(tr("ALT+?")));
Run Code Online (Sandbox Code Playgroud)

第一行应用(翻译)文本"?" 在菜单或按钮上显示为其文本的操作.请注意,问号符号可能不是所有语言中的正确符号,因此翻译方法允许翻译者在需要时指定更合适的符号.&符号表示当菜单处于活动状态时,紧跟在后面的字符将是快捷键.

第二行指定Alt+ 的(已翻译)快捷方式,?在此示例中,Shift如果需要,修改器将由平台处理.同样,该tr()方法允许翻译者指定更合适的快捷方式(如果可用).


回应teukkam的评论:

如果你的意思是你只是希望你的按钮可以被击键触发,无论它是否被修改过Alt,那么你可以做类似的事情:

QPushButton* yourButton; // assign this pointer yourself
yourButton->setText(tr("&Process"));
yourButton->setShortcut(tr("p"));
Run Code Online (Sandbox Code Playgroud)

在此示例中,&符号setText()与前一个示例相同,并且translate函数以相同的方式使用.

setShortcut()方法只使用字母"p",所以现在可以使用或不使用Alt修饰符.快速浏览文档表明,无论是否使用Shift修饰符都可以使用,因为键序列中的字母显然不区分大小写.

此外,P将是一个糟糕的选择,因为它通常被认为是打印命令.

最后要注意的是,如果您要定义硬编码快捷方式,请确保它们适用于所有目标平台!


小智 6

在 Windows 中:

热键

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

捷径

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

访问密钥

单键 HotKey该命令用于激活可见的命令控件 (需要 gui 元素),该控件的标题/标签带有下划线的相应热键字母。

加速键

多键 HotKey哪个命令是激活命令控件(需要 gui 元素),无论其可见性如何。