QShortcutを使用すると、QShortcutEvent (キーの押下、組み合わせ、またはシーケンス) をスロット メソッドに簡単に接続できます。次に例を示します。
QShortcut *shortcut = new QShortcut( QKeySequence(Qt::Key_7), this, 0, 0, Qt::ApplicationShortcut);
(ヒント: 数字キーの場合、QSignalMapper を使用して QShortcut のactivated()
シグナルをint
パラメーター付きのスロットにマップできます)。
ただし、この例では、NumLock (テンキーが有効) で、両方の '7' キーがショートカットのactivated()
信号をトリガーします。
ウィジェットのkeyPressEventをフィルタリングまたは再実装し、 QKeyEvent::modifiers()でQt::KeypadModifierをチェックする以外に、さまざまなキーを検出する方法はありますか?
さらに掘り下げて、見つけた
QTBUG-20191 Qt::KeypadModifier は、2012 年 9 月に 4.8 にマージされたパッチにリンクしているsetShortcutでは機能しません。
button2->setShortcut(Qt::Key_5 + Qt::KeypadModifier);
これは、Qt 4.8.1 の QShortcut では機能しません。つまり、モディファイア フラグを使用 (追加) すると、'7' キーのどちらも認識されません。
したがって、修飾子を検出するフィルターをインストールし、他のすべての keyEvents をデフォルトの実装で処理して QShortcut で使用できるようにするのが最も簡単な方法だと思います。