如何将 Qt 按钮映射到键盘按键

Posted

技术标签:

【中文标题】如何将 Qt 按钮映射到键盘按键【英文标题】:How to map Qt push button to keyboard key presses 【发布时间】:2021-10-28 18:02:35 【问题描述】:

我有一个带有多个以字符为名称的按钮的小部件。当我按下键盘上的一个字符时,我希望我的按钮处于活动状态(按下)。即,当我在键盘上按“a”时,“Push_button_A”应该被按下。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

有多种选择。

a) 您可以安装和覆盖父窗口小部件的事件过滤器并处理其中的按键事件。

b) 或者您可以为每个QPushButton 对象添加QShortcut 对象并将它们的信号(QShortcut::activated)和插槽连接到按钮(QPushButton::click 甚至更好的QPushButton::animateClick)。

c) 或者您可以使用助记符快捷方式...参见https://doc.qt.io/qt-5/qabstractbutton.html#shortcut-prop 和https://doc.qt.io/qt-5/qabstractbutton.html#shortcut-prop 引用:“如果文本包含与符号 ('&'),则会自动为其创建快捷方式。后面的字符'&' 将用作快捷键。如果文本未定义任何快捷方式,则任何先前的快捷方式都将被覆盖或清除。有关详细信息,请参阅 QShortcut 文档。要显示实际的 & 符号,请使用 '&&'。"

选择哪种解决方案,这取决于有多少按钮,是否希望动态添加它们以及名称/字母将如何存储(是硬编码的?还是以某种方式动态设置的?是吗?取决于语言翻译?)。根据您的描述,我们对此的信息太少,因此我们无法告诉您该走哪条路。

PS:可能还有更多可能的解决方案,但这三个在我看来是最简单的。

【讨论】:

快捷方式通常与 Ctrl 或 Alt 键结合使用。我认为 OP 只是想要“a”键本身来触发按钮。 @JarMan Shortcuts 可以在没有修饰符的情况下使用...所以我提到了这个选项。顺便提一句。助记快捷方式没有修饰符。 你可能是对的。但我只是在读这个documenation,它说它使用 Alt 键。 哦,我的错。是的,你是对的,它确实使用了 Alt 键。但是,快捷方式不一定需要修饰符。

以上是关于如何将 Qt 按钮映射到键盘按键的主要内容,如果未能解决你的问题,请参考以下文章

如何更改键盘按键---KeyTweak?

有没有win10上用的,能把键盘上某些按键映射到屏幕上的软件

qt语音发送信息按键如何设置

有没有WIN10能用的手柄键盘映射

QT按键长按功能的实现问题

MAC更改外置键盘按键【键盘映射】