このページでは

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]

これは、この入力ハンドラが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

HoverHandler が無効の場合、すべてのイベントを拒否し、シグナルは発せられない。

HoverHandlerparentdisabled の場合、HoverHandler はデフォルトでホバーイベントに反応し続ける。これは、コントロールが無効化されていても、ホバーフィードバック効果やツールチップが有用な場合があるためです。親が無効になっているときにHoverHandler を無効にしたい場合は、バインディングを追加します:

Item {
    HoverHandler {
        enabled: parent.enabled
    }
}

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 によって拡張される)内にあるときはいつでも true を保持する。

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。

デフォルトでは、ハンドラが宣言されているItem(parent )と同じである。しかし、あるItem内のイベントを処理しながら別のItemを操作するために、ターゲットを別のItemに設定したり、null 、デフォルトの動作を無効にし、代わりに別のことを行うために、ターゲットを別のItemに設定すると便利な場合がある。

シグナルのドキュメント

canceled(eventPoint point)

このハンドラがすでに与えられたpoint をグラブしている場合、グラブが別のポインタハンドラまたはアイテムに奪われると、このシグナルが発せられる。

注: 対応するハンドラは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

© 2026 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.