由于访问键和快捷键冲突,Qt4和Qt5之间的更改
Change between Qt4 and Qt5 with conflicting access keys and Shortcut keys
在处理菜单栏菜单访问键和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
- 将 CMakeLists QT4 更新为 QT5
- 禁用 Qt5 代码中的旧(Qt4 样式)信号槽语法
- QT4 > QT5 for uri.queryItems();
- 'QwtPlotLayout' 中没有命名'setMargin'的成员 - 将 Qt4.7 转换为 Qt5.8
- 从Qt4移植到Qt5时丢失Ctrl+U组合键
- 通过IPC连接Qt4和Qt5进程的最佳方法是什么?
- (LINUX)从Qt4移植到QT5未定义的符号:_Zn9Qwidget11stylechangeER6QStyle
- 在Qt4的端口之后,嵌入Win32 HWND的Qt5 QWidget::create()不再工作
- Qt4 到 Qt5 链接错误
- VS2013的Qt4到Qt5迁移链接器警告(和错误)
- Qt5驱动的应用程序使用Qt4库并失败.如何避免这种情况
- 从Qt4.x(Ubuntu Linux)迁移到Qt5.1(Windows 7)
- Qt5比qt4慢,用于在TabWidget中绘制许多像素图
- Qt5到Qt4 UI文件兼容性
- 使Qt5连接式工作在Qt4中
- 从Qt5.3回到Qt4.8,有Q_DECLARE_METATYPE问题
- 即使安装了qt5,也强制使用qt4进行编译
- 由于访问键和快捷键冲突,Qt4和Qt5之间的更改
- 从QT4转换到QT5导致编译错误;c2666
- 从Qt4到Qt5的串口