我在每个上都设置了多个快捷方式QAction
,例如“L、Right、Space”。但“L”快捷方式现在不起作用。'Right' 和 'Space' 可以工作。
同样,如果我注册“A,B”然后,“A”将不起作用,而“B”将起作用。
如果我使用QMainWindow::eventFilter()
自己,而不是使用QAction::setShortcut()
,则所有快捷键都可以使用。
在这种情况下,当然,快捷键文本不会显示在主菜单上。
我在 Windows 7 x64 和 Qt-5.9.1 上测试过
QMap<QString, QAction*>& actions = qApp->keyActions().actions();
QMap<QString, QKeySequence> & seqMap = qApp->keyActions().keyMaps();
foreach(const QString& name, actions.keys()) {
QAction* a = actions[name];
QKeySequence seq = seqMap[name]; // e.g. QKeySequence("L, Right, Space")
a->setShortcut(seq);
a->setShortcutContext(Qt::ApplicationShortcut);
}