Qt Quick 入力ハンドラ
Qt Quick 入力ハンドラは、キーボード、タッチ、マウス、スタイラス( )からの をUIで処理するためのQML型群です。 や のようなイベントハンドリングアイテムとは対照的に、入力ハンドラ は明確に非ビジュアルであり、より少ないメモリしか必要とせず、インタラクションのアスペクト ごとに1つのハンドラインスタンスというように、より多くの数で使用されることを意図しています。各入力ハンドラインスタンスは、 アイテムの代わりに特定のイベントを処理する。したがって、視覚的な関心事と動作的な関心事はよりよく分離され、動作はよりきめの細かい構成によって構築されます。devices events MouseArea Flickable parent
Qt Quick Examples - Pointer Handlersでは、これらの使用例をいくつか示しています。
既存のKeys 添付プロパティはコンセプトが似ているので、ポインティングデバイス指向のハンドラとKeys
を合わせて入力ハンドラのセットと呼んでいます。Qt の将来のバージョンでは、attached プロパティの使用例がさらに増えることを期待しています。
入力ハンドラ
ドラッグ用ハンドラ | |
マウスとタブレットのホバー用ハンドラ | |
矢印キーによるキーナビゲーションをサポート | |
アイテムへのキーハンドリング | |
ピンチジェスチャー用ハンドラ | |
単一のタッチポイントに反応するハンドラ | |
タップとクリック用ハンドラ | |
マウスホイール用ハンドラ |
主な機能
主な機能は以下の通りです:
- フォーカスされたアイテム内のキー入力を処理
- デバイスに関係なく、タップやドラッグなどのジェスチャーを処理します。
- 異なるクラスのデバイスからのジェスチャーを異なる方法で扱う
- 各アイテムは無制限のハンドラを持つことができます。
アイテムを操作するハンドラ
ハンドラの中には、アイテムの内部で宣言されるだけで、インタラクティブ性を追加するものがあります:
import QtQuick Rectangle { width: 100 height: 100 color: "lightsteelblue" DragHandler { } }
ハンドラのプロパティとシグナル
すべてのハンドラには、バインディングで使用できるプロパティと、入力に反応するために処理できるシグナルがあります:
import QtQuick Rectangle { id: button signal clicked width: 150; height: 50; radius: 3 color: tapHandler.pressed ? "goldenrod" : hoverHandler.hovered ? "wheat" : "beige" border.color: activeFocus ? "brown" : "transparent" focus: true HoverHandler { id: hoverHandler } TapHandler { id: tapHandler onTapped: button.clicked() } Keys.onEnterPressed: button.clicked() }
ポインタグラブ
ポインタハンドラの重要なコンセプトは、ハンドラが実行するグラブのタイプです。例えば、QPointerEvent::setExclusiveGrabber()を呼び出すと、次のマウスの動きとマウスリリースイベントはそのオブジェクトだけに送られます。(この排他性を回避する方法として、QQuickItem::setFiltersChildMouseEvents() とQQuickItem::childMouseEventFilter() を参照してください)。passive grabマウスとタッチのpress イベントは、すべてのItemをトップダウンZ順で訪問することで配信されます:最初に各Itemの子ハンドラ、次にItem 自体。プレスイベントが配信される時、ハンドラーはその必要性に応じてパッシブグラブかエクスクルーシブグラブのどちらかを取ることができます。パッシブグラブを取ると、シーン内の他のItemやHandlerがパッシブでもエクスクルーシブでもどんなグラブを取っても、更新とリリースを受け取ることが保証されます。パッシブグラブのみで動作するハンドラー(PointHandler など)もあれば、排他的グラブを必要とするハンドラーもあります。また、ジェスチャーが実行されていることを検知するまでパッシブグラブで「待機」し、パッシブグラブから排他的グラブに移行するハンドラーもあります。TapHandlerのグラブ動作はconfigurable です。
グラブの遷移が要求されたとき、PointerHandler::grabPermissions 、QQuickItem::keepMouseGrab() とQQuickItem::keepTouchGrab() は、遷移が許可されるかどうかを制御します。
関連情報
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.