HoverHandler QML Type
マウスとタブレットのホバー用ハンドラ。もっと見る...
Import Statement: | import QtQuick |
Inherits: |
プロパティ
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- blocking : bool
(since 6.3)
- cursorShape : Qt::CursorShape
- enabled : bool
- grabPermissions : flags
- hovered : bool
- margin : real
- parent : Item
- point : handlerPoint
- target : Item
シグナル
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
詳細説明
HoverHandler は、マウスまたはタブレットのスタイラスカーソルのホバリングを検出します。
hovered プロパティへのバインディングは、カーソルがparent アイテムに入ったり出たりしたときに反応する最も簡単な方法です。point プロパティは、カーソル位置など、より詳細な情報を提供します。acceptedDevices 、acceptedPointerTypes 、acceptedModifiers プロパティを使用すると、特定の種類のデバイスのホバリングを検出したり、修飾キーを押している間の動作を絞り込むことができます。
cursorShape プロパティは、hovered がtrue
に変わるたびにカーソルを変更することができます。
MouseArea,PointHandler,Qt Quick Examples - Pointer Handlersも参照してください 。
プロパティの説明
acceptedDevices : flags |
ポインタハンドラをアクティブにできるポインティングデバイスのタイプ。
デフォルトでは、このプロパティはPointerDevice.AllDevices に設定されています。デバイスタイプの OR の組み合わせに設定すると、一致しないデバイスからのポインタイベントは無視されます。
例えば、あるアイテムがマウスのホバーに反応するように、そしてスタイラスのホバーに反応するように、2つのハンドラを設定することができます:
import QtQuick Rectangle { width: 150; height: 50; radius: 3 color: mouse.hovered ? "goldenrod" : stylus.hovered ? "tomato" : "wheat" HoverHandler { id: stylus acceptedDevices: PointerDevice.Stylus cursorShape: Qt.CrossCursor } HoverHandler { id: mouse acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad cursorShape: Qt.PointingHandCursor } }
利用可能なデバイスタイプは以下の通りです:
定数 | 説明 |
---|---|
PointerDevice.Mouse | マウス |
PointerDevice.TouchScreen | タッチスクリーン |
PointerDevice.TouchPad | タッチパッドまたはトラックパッド。 |
PointerDevice.Stylus | グラフィックタブレット上のスタイラス。 |
PointerDevice.Airbrush | グラフィックタブレット上のエアブラシ。 |
PointerDevice.Puck | グラフィックタブレット上の十字線付きデジタイザ。 |
PointerDevice.AllDevices | あらゆるタイプのポインティングデバイス。 |
注: すべてのプラットフォームがマウスとタッチパッドを区別できるわけではありません。区別できるプラットフォームでは、マウスとタッチパッドの動作を同じにしたい場合がよくあります。
QInputDevice::DeviceTypeも参照のこと 。
acceptedModifiers : flags |
このプロパティが設定されると、指定されたキーボード修飾子が押された場合のみ、ホバーイベントが処理されます。修飾子がない場合、イベントは無視されます。
このプロパティはデフォルトでQt.KeyboardModifierMask
に設定されており、修飾キーに関係なくホバーイベントが処理されます。
例えば、Item は、同じタイプのハンドラを2つ持つことができ、そのうちの1つは、必要なキーボード修飾子が押された場合にのみ有効になります:
import QtQuick Rectangle { width: 150; height: 50; radius: 3 color: control.hovered ? "goldenrod" : shift.hovered ? "wheat" : "beige" HoverHandler { id: control acceptedModifiers: Qt.ControlModifier cursorShape: Qt.PointingHandCursor } HoverHandler { id: shift acceptedModifiers: Qt.ShiftModifier cursorShape: Qt.CrossCursor } }
使用可能な修飾子は以下の通りです:
定数 | 説明 |
---|---|
Qt.NoModifier | 修飾キーは許されません。 |
Qt.ShiftModifier | キーボードのShiftキーが押されていなければならない。 |
Qt.ControlModifier | キーボードの Ctrl キーが押されていなければならない。 |
Qt.AltModifier | キーボードのAltキーが押されていること。 |
Qt.MetaModifier | キーボードのMetaキーが押されていなければならない。 |
Qt.KeypadModifier | キーパッドのボタンが押されていること。 |
Qt.GroupSwitchModifier | キーボードのMode_switchキーを押す。X11のみ(Windowsではコマンドライン引数で有効にしない)。 |
Qt.KeyboardModifierMask | ハンドラは修飾キーを無視する。 |
Qt::KeyboardModifierも参照のこと 。
acceptedPointerTypes : flags |
ポインタハンドラを起動できるポインティング機器の種類(一般的なもの、スタイラス、消しゴムなど)。
デフォルトでは、このプロパティはPointerDevice.AllPointerTypes に設定されています。 デバイスタイプの OR の組み合わせに設定すると、一致しないイベントからのイベントは無視されます。
例えば、スタイラスや消しゴムがグラフィック・タブレットの上にあるかどうかによってカーソルを変化させ、フィードバックを提供することができます:
import QtQuick Rectangle { id: rect width: 150; height: 150 HoverHandler { id: stylus acceptedPointerTypes: PointerDevice.Pen cursorShape: Qt.CrossCursor } HoverHandler { id: eraser acceptedPointerTypes: PointerDevice.Eraser cursorShape: Qt.BlankCursor target: Image { parent: rect source: "images/cursor-eraser.png" visible: eraser.hovered x: eraser.point.position.x y: eraser.point.position.y - 32 } } }
使用可能なポインタタイプは以下の通りです:
定数 | 説明 |
---|---|
PointerDevice.Generic | マウスまたはマウスをエミュレートするデバイス。 |
PointerDevice.Finger | タッチスクリーン上の指(ホバー検出は不可能)。 |
PointerDevice.Pen | グラフィック・タブレット上のスタイラス。 |
PointerDevice.Eraser | グラフィックタブレット上の消しゴム。 |
PointerDevice.Cursor | グラフィックス・タブレット上の十字線付きデジタイザ。 |
PointerDevice.AllPointerTypes | あらゆるタイプのポインティングデバイス。 |
QPointingDevice::PointerTypeも参照してください 。
active : bool |
このInput Handlerが1つまたは複数のeventPoints 、それらの点の排他的なグラブを成功させることで、それらの点のハンドリングに単独で責任を負うときはいつでも、このtrue
が保持されます。これは、このハンドラがそれらのイベントポイントの動きに応じてそのプロパティを最新に保ち、target (もしあれば)を積極的に操作していることを意味する。
blocking : bool |
このハンドラが、その後ろにある他のアイテムやハンドラが同時にホバーされるのを防ぐかどうか。このプロパティはデフォルトでfalse
です。
このプロパティは Qt 6.3 で導入されました。
cursorShape : Qt::CursorShape |
このプロパティは、hovered がtrue
で、他のハンドラがそれをオーバーライドしていない場合に表示されるカーソル形状を保持します。
利用可能なカーソル形状は以下の通りです:
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.SizeVerCursor
- Qt.SizeHorCursor
- Qt.SizeBDiagCursor
- Qt.SizeFDiagCursor
- Qt.SizeAllCursor
- Qt.BlankCursor
- Qt.SplitVCursor
- Qt.SplitHCursor
- Qt.PointingHandCursor
- Qt.ForbiddenCursor
- Qt.WhatsThisCursor
- Qt.BusyCursor
- Qt.OpenHandCursor
- Qt.ClosedHandCursor
- Qt.DragCopyCursor
- Qt.DragMoveCursor
- Qt.DragLinkCursor
このプロパティのデフォルト値は設定されていないため、同じ親アイテム上でアクティブなハンドラがカーソル形状を決定することができます。このプロパティは、undefined
に設定することで初期状態に戻すことができます。
cursorShape
が定義されたハンドラがactive の場合、そのカーソルが表示される。そうでない場合、HoverHandler にcursorShape
が定義されていれば、そのカーソルが表示される。そうでない場合は、親アイテムの cursor が表示されます。
注意: このプロパティが設定されていないか、undefined
に設定されている場合、値を読み取るとQt.ArrowCursor
が返されます。
Qt::CursorShape およびQQuickItem::cursor()も参照のこと 。
enabled : bool |
PointerHandler が無効になっている場合、すべてのイベントは拒否され、シグナルは発せられない。
grabPermissions : flags |
このプロパティは、このハンドラのロジックが排他グラブを引き継ぐことを決定したとき、または他のハンドラからグラブの引き継ぎやキャンセルを承認するよう求められたときのパーミッションを指定します。
定数 | 説明 |
---|---|
PointerHandler.TakeOverForbidden | このハンドラは、ItemまたはHandlerのどのタイプからもグラブパーミッションを取ることも与えることもできません。 |
PointerHandler.CanTakeOverFromHandlersOfSameType | このハンドラは、同じクラスの他のハンドラから排他的グラブを取ることができます。 |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | このハンドラは、あらゆる種類のハンドラから排他的なグラブを取ることができます。 |
PointerHandler.CanTakeOverFromItems | このハンドラは、どのタイプのItemからも排他的グラブを取ることができます。 |
PointerHandler.CanTakeOverFromAnything | このハンドラは、どのタイプのアイテムまたはハンドラからも排他的グラブを取ることができます。 |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | このハンドラーは、同じクラスの他のハンドラーがグラブを取ることを許可します。 |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | このハンドラーは、あらゆる種類のハンドラーにグラブを取る許可を与えます。 |
PointerHandler.ApprovesTakeOverByItems | このハンドラーは、あらゆる種類のItemがグラブを取ることを許可します。 |
PointerHandler.ApprovesCancellation | このハンドラは、そのグラブが null に設定されることを許可します。 |
PointerHandler.ApprovesTakeOverByAnything | このハンドラはどんな種類のItemやハンドラにもグラブを取る許可を与えます。 |
デフォルトはPointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything
で、ほとんどの引き継ぎシナリオを許可しますが、例えば2つのPinchHandlerが同じタッチポイントを取り合うことを避けます。
margin : real |
eventPoint がこのハンドラをアクティブにできるparent アイテムの境界を超えたマージン。たとえば、target がparent
でもあるPinchHandler では、parent
が非常に小さなサイズに縮小されてもピンチ・ジェスチャーが可能なように、一般的なユーザーの指の幅の半分以上の距離に設定すると便利です。また、TapHandler ベースのボタンがスクリーンエッジの近くに配置されている場合、フィッツの法則に従うために使用することができます:ボタンが視覚的にエッジから数ピクセル離れていても、スクリーンエッジでのマウスクリックに反応します。
デフォルト値は0です。
parent : Item |
ハンドラのスコープであるItem ;ハンドラが宣言されたItem。ハンドラは、このItemに代わってイベントを処理する。つまり、ポインタイベントは、そのeventPoints の少なくとも1つがItemの内部で発生する場合に関連する。最初はtarget() が同じであるが、再割り当てが可能である。
target およびQObject::parent()も参照のこと 。
point : handlerPoint |
eventPoint 現在扱われている点。現在処理されている点がない場合、このオブジェクトはデフォルト値(すべての座標が0)にリセットされる。
target : Item |
このハンドラが操作するアイテム。
デフォルトでは、ハンドラが宣言されているItemであるparent と同じである。しかし、ターゲットを別のItemに設定することで、あるItem内のイベントを処理しながら別のItemを操作したり、null
、デフォルトの動作を無効にして、代わりに別の処理を行ったりするのに便利な場合がある。
シグナル・ドキュメント
canceled(eventPoint point) |
このハンドラがすでに指定されたpoint をグラブしている場合、グラブが別のポインタハンドラまたはItemに奪われると、このシグナルが発行されます。
注意: 対応するハンドラはonCanceled
です。
grabChanged(PointerDevice::GrabTransition transition, eventPoint point) |
このシグナルは、このハンドラに関連する何らかの方法でグラブが変更されたときに発行されます。
transition (動詞)は何が起こったかを示す。point (オブジェクト)は、グラブされた、またはグラブされなかったポイントです。
transition の有効な値は以下の通りです:
定数 | 説明 |
---|---|
PointerDevice.GrabExclusive | このハンドラは、point を処理するための主要な責任を負った。 |
PointerDevice.UngrabExclusive | このハンドラは、以前の排他的グラブを放棄した。 |
PointerDevice.CancelGrabExclusive | このハンドラの排他的グラブは引き継がれたか、キャンセルされた。 |
PointerDevice.GrabPassive | このハンドラは、point を監視するために、パッシブグラブを獲得した。 |
PointerDevice.UngrabPassive | このハンドラーは以前のパッシブグラブを放棄した。 |
PointerDevice.CancelGrabPassive | このハンドラの前のパッシブグラブが異常終了した。 |
注: 対応するハンドラはonGrabChanged
です。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。