2017-09-12 8 views
0

それぞれQActionに複数のショートカットを付けます。 'L、右、宇宙' 'L'ショートカットは機能しません。 「右」と「宇宙」が働くことができます。複数のショートカットキーが機能しない

同様に、私が 'A、B'を登録してから 'A'が動作せず、 'B'が動作します。

自分でQMainWindow::eventFilter()を使用すると、QAction::setShortcut()の代わりにすべてのショートカットキーが機能します。

この場合、もちろん、ショートカットキーのテキストはメインメニューに表示されません。名前 "QKeySequenceは" 通り

は、私は、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

https://stackoverflow.com/a/46072736/5068056 – aghilpro

+0

'L、Right、Space'であなたは何をしていますか? – aghilpro

+0

問題の説明を改善することをお勧めします。[よくある質問はどうすればよいですか?]( – eyllanesc

答えて

0

でテストされ、それが押されなければならキーのシーケンスです。文字列"L, Right, Space"は、アクションを呼び出すために、3つのキーをすべてこの順番で押す必要があることを意味します。

複数の「パラレル」キーが必要な場合、つまりアクションがシーケンスではなくそれらのキーのいずれかに反応する場合は、QAction::setShortcutsを使用して、すべてのキーに対して1つのシーケンスを作成します。 (QStringList::splitを使用して文字列を3つのキーに分割することができます)

関連する問題