我在每个 QAction
上戴了多个快捷方式,例如" L,正确,空间"。但是" L"快捷方式现在不起作用。"正确"one_answers"空间"可以工作。
同样,如果我注册'a,b',然后'a'''''''''''''将起作用。
如果我自己使用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);
}
作为" qkey序列"的名称,它是必须按下的一系列键。字符串"L, Right, Space"
表示用户必须按该顺序按所有3个键来调用操作!
如果您需要多个"并行"键,即该动作应为任何一个键,而不是序列反应,请使用QAction::setShortcuts
并为每个密钥创建一个序列。(您可以使用QStringList::split
将字符串分为3个密钥。)