我在每个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);
}
答案 0 :(得分:0)
正如名称&#34; QKeySequence&#34;建议,这是一系列必须按下的键。字符串"L, Right, Space"
表示用户必须按顺序按下所有3个键才能调用操作!
如果你想要多个&#34; parallel&#34;键,即动作应对任何键而不是序列作出反应,使用QAction::setShortcuts
并为每个键创建一个序列。 (您可以使用QStringList::split
将字符串拆分为3个键。)