由于访问键和快捷键冲突,Qt4和Qt5之间的更改

Change between Qt4 and Qt5 with conflicting access keys and Shortcut keys

本文关键字:Qt4 Qt5 之间 冲突 快捷键 于访问 访问      更新时间:2023-10-16

在处理菜单栏菜单访问键和QActions快捷键有冲突的键组合时,QT4和QT5之间有一个变化。

在q4中,当菜单栏包含带有& &;File之类的菜单时,它可以通过点击Alt然后点击F来打开。如果使用相同的热键组合(如Alt+F)创建QAction,则如果Alt和F同时被按下或按住Alt并按下F, QAction的信号将被触发。
这是类似于Visual studio和其他MS程序的功能。

在Qt5.4和Qt5.5中,当菜单栏包含带有& &;File之类的菜单时,可以通过点击Alt然后点击F来打开。如果使用相同的热键组合(如Alt+F)创建QAction,那么QAction的信号将不会被触发。相反,什么也不发生,并向应用程序输出发送一条警告消息。

QAction::eventFilter:模糊快捷方式重载:Alt+F

这个问题可以重复使用一个QTcreator的例子,比如菜单,并将newAct的set快捷键更改为Alt+F或其他与菜单栏相同的快捷键。

fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAct);
void MainWindow::createActions()
{
    newAct = new QAction(tr("&New"), this);
    newAct->setShortcut(tr("Alt+F"));  // This will work in QT4 but not in QT5 and will send a message QAction::eventFilter: Ambiguous shortcut overload: Alt+F
    newAct->setStatusTip(tr("Create a new file"));
    connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));

我的问题是什么是正确的功能为windows QT4或Qt5。如果QT5是正确的,是否有一种方法来设置Qt,使其像QT4一样,而不是

不要讨厌你的用户。别那样做。

应用程序全局键快捷键必须是明确的。Qt5的行为是正确的。Qt4未能检测到这一点,这会让您严重误导用户。当用户看到菜单或菜单项的下划线键盘快捷方式时,他们完全有权利相信该快捷方式是应用程序全局的,不会依赖于上下文。你在Qt 4中观察到的是"允许的",但从可用性的角度来看非常糟糕,并且在精致的专业应用程序中没有位置。

要获得您想要的行为,您必须使操作明确:您必须从菜单操作中删除快捷方式。这将正常工作:菜单失去快捷键,您的应用程序全局快捷键接管该键序列。

唉,我非常怀疑接管一个非常常见的菜单快捷方式是不是一个好主意——大多数Windows应用程序都有菜单。如果我是你的用户,我会喜欢你接管Alt-F