HoverHandler QML Type

マウスとタブレットのホバー用ハンドラ。もっと見る...

Import Statement: import QtQuick
Inherits:

SinglePointHandler

プロパティ

シグナル

  • canceled(eventPoint point)
  • grabChanged(PointerDevice::GrabTransition transition, eventPoint point)

詳細説明

HoverHandler は、マウスまたはタブレットのスタイラスカーソルのホバリングを検出します。

hovered プロパティへのバインディングは、カーソルがparent アイテムに入ったり出たりしたときに反応する最も簡単な方法です。point プロパティは、カーソル位置など、より詳細な情報を提供します。acceptedDevicesacceptedPointerTypesacceptedModifiers プロパティを使用すると、特定の種類のデバイスのホバリングを検出したり、修飾キーを押している間の動作を絞り込むことができます。

cursorShape プロパティは、hoveredtrue に変わるたびにカーソルを変更することができます。

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 [read-only]

このInput Handlerが1つまたは複数のeventPoints 、それらの点の排他的なグラブを成功させることで、それらの点のハンドリングに単独で責任を負うときはいつでも、このtrue が保持されます。これは、このハンドラがそれらのイベントポイントの動きに応じてそのプロパティを最新に保ち、target (もしあれば)を積極的に操作していることを意味する。


blocking : bool [since 6.3]

このハンドラが、その後ろにある他のアイテムやハンドラが同時にホバーされるのを防ぐかどうか。このプロパティはデフォルトでfalse です。

このプロパティは Qt 6.3 で導入されました。


cursorShape : Qt::CursorShape

このプロパティは、hoveredtrue で、他のハンドラがそれをオーバーライドしていない場合に表示されるカーソル形状を保持します。

利用可能なカーソル形状は以下の通りです:

  • 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 の場合、そのカーソルが表示される。そうでない場合、HoverHandlercursorShape が定義されていれば、そのカーソルが表示される。そうでない場合は、親アイテムの 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が同じタッチポイントを取り合うことを避けます。


hovered : bool [read-only]

ポインティングデバイスのカーソル(マウスまたはタブレット)が、parent アイテムの境界内にある場合は、margin によって拡張されます。


margin : real

eventPoint がこのハンドラをアクティブにできるparent アイテムの境界を超えたマージン。たとえば、targetparent でもあるPinchHandler では、parent が非常に小さなサイズに縮小されてもピンチ・ジェスチャーが可能なように、一般的なユーザーの指の幅の半分以上の距離に設定すると便利です。また、TapHandler ベースのボタンがスクリーンエッジの近くに配置されている場合、フィッツの法則に従うために使用することができます:ボタンが視覚的にエッジから数ピクセル離れていても、スクリーンエッジでのマウスクリックに反応します。

デフォルト値は0です。


parent : Item

ハンドラのスコープであるItem ;ハンドラが宣言されたItem。ハンドラは、このItemに代わってイベントを処理する。つまり、ポインタイベントは、そのeventPoints の少なくとも1つがItemの内部で発生する場合に関連する。最初はtarget() が同じであるが、再割り当てが可能である。

target およびQObject::parent()も参照のこと


point : handlerPoint [read-only]

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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。