多个快捷键不起作用



我在每个 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个密钥。)

最新更新