【发布时间】:2017-09-12 05:48:43
【问题描述】:
我在每个QAction 上设置了多个快捷方式,例如'左,右,空格'。
但“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);
}
【问题讨论】: