防止Qt生成快捷方式

Prevent Qt from generating shortcuts?

本文关键字:快捷方式 Qt 防止      更新时间:2023-10-16

我创建的QPushButton如下,没有显式快捷键(&):

testButton = new QPushButton(tr("Start"));

我可以正确地读取按钮的文本后,它的结构:

testButton.text()返回'Start'(不带单引号)

然后我创建一个信号/插槽连接:

QObject::connect( testButton, &QPushButton::clicked, this, &Dialog::actionRequest );

Dialog::actionRequest槽中,testButton.text()返回'&Start',就好像在引擎盖下的"某处"创建了一个快捷方式。

如果我命名按钮'Foo',同样的现象发生,但testButton.text()将返回'F&oo'。这是因为我已经有了一个"文件"菜单,它有一个显式的快捷方式——创建为:

fileMenu = new QMenu(tr("&File"), this);

和Alt+O可能会成为下一个"可用"的快捷键?

我不希望为我的QPushButton创建这个隐式快捷方式。这个问题的解决办法是什么?我运行的是Fedora 22(带有plasma 5),使用的是stock qt 5.5软件包。

有一个默认的QShortcut对象与菜单选项、按钮等相关联。不幸的是,没有办法直接访问和禁用他们创建后,我知道。

您可以尝试调用Qt全局函数qt_set_sequence_auto_mnemonic(false);来动态禁用此行为,但我不确定它是否在每个平台上都可用。