Я накладываю несколько ярлыков на каждый QAction
, например. «L, вправо, пробел». но ярлык «L» теперь не работает. «Вправо» и «Пробел» могут работать.
Точно так же, если я зарегистрирую «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);
}