2017-01-16 14 views
1

guiアイテムの状態を切り替えるには、押したままの動作を使用します。
フォーカスされていないQtQuickアイテムでキーボードイベントを受け取る方法

キーボードイベントを受信するには、FocusScope(下記)を使用します。

FocusScope{ 
    id:pageFocus 

    property var pedalKey//a key id 

    Keys.enabled: true 
    Keys.onPressed: { 
     if(event.key===pedalKey && !event.isAutoRepeat) 
     { 
      state="a" 
     } 
    } 
    Keys.onReleased: { 
     if(event.key===pedalKey && !event.isAutoRepeat) 
     { 
      state="b" 
     } 
    } 
} 

FocusScopeがフォーカスを失っても機能します。
最も恐ろしいことは、私がどれがItemに焦点を当てているか分からないということです。
Itemがフォーカスなしでキーボードイベントを受信できるようにする方法はありますか?

答えて

2

FocusScopeがフォーカスを失ったときに機能します。

はい、キーイベントは、activeFocusを持つアイテムにのみ配信されます。イベントは、最も内側のアイテムに最初に送信され、そのうちの1人がイベントを受け入れるまで(例えばここで使用しているハンドラーを使用して)、親のチェーンを進めます。

最も重大なことは、どのアイテムがフォーカスを持っているのかわかりません。

Window.activeFocusItem attached propertyを使用して、現在フォーカスがある場所を確認できます。

項目がフォーカスなしでキーボードイベントを受信できるようにする方法はありますか?

簡単にはできません。イベントフィルタリングを使用してイベントがウィンドウに到達する前に傍受することができますが、私はそれが最後の手段であると考えています。 Shortcutsは、あなたが傍受しようとしているプレスに応じて別の可能性があります。

2

キーイベントを他のオブジェクト(複数のオブジェクトを含む)に転送できます。 Hereは、Qtのドキュメントの例です。

+0

実際には、「既知」の項目があれば良い提案です。 –

関連する問題