WheelHandler QML Type

マウスホイールのハンドラ。詳細...

Import Statement: import QtQuick
Inherits:

SinglePointHandler

プロパティ

信号

  • wheel(WheelEvent event)

詳細説明

WheelHandler は、ユーザがマウスホイールを回転させると、Item の数値プロパティをインタラクティブに操作するために使用されるハンドラです。他の入力ハンドラと同様に、デフォルトではtarget を操作します。どのプロパティを操作するかを制御するには、property を宣言します:

import QtQuick

Rectangle {
    width: 170; height: 120
    color: "green"; antialiasing: true

    WheelHandler {
        property: "rotation"
        onWheel: (event)=> console.log("rotation", event.angleDelta.y,
                                       "scaled", rotation, "@", point.position,
                                       "=>", parent.rotation)
    }
}

BoundaryRule は、WheelHandler(および他のInput Handler)と組み合わせて、ターゲットプロパティが持つことができる値の許容範囲を宣言するのに非常に便利です。例えば、WheelHandlerと の組み合わせを使ってスクロールを実装し、ユーザがホイールを回転させたり、タッチスクリーン上でアイテムをドラッグしたときに、スクロール可能なItemの プロパティを操作し、 で上から下への移動範囲を制限することが可能です:DragHandler y BoundaryRule

import QtQuick
import Qt.labs.animation

Item {
    width: 320; height: 480
    Flow {
        id: content
        width: parent.width
        spacing: 2; padding: 2

        WheelHandler {
            orientation: Qt.Vertical
            property: "y"
            rotationScale: 15
            acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
            onActiveChanged: if (!active) ybr.returnToBounds()
        }

        DragHandler {
            xAxis.enabled: false
            onActiveChanged: if (!active) ybr.returnToBounds()
        }

        BoundaryRule on y {
            id: ybr
            minimum: content.parent.height - content.height
            maximum: 0
            minimumOvershoot: 400; maximumOvershoot: 400
            overshootFilter: BoundaryRule.Peak
        }

        Repeater {
            model: 1000
            Rectangle { color: "gray"; width: 10 + Math.random() * 100; height: 15 }
        }
    }
}

あるいは、property が設定されていないか、targetが NULL の場合、WheelHandler は自動的に何も操作しません。rotation プロパティをバインディングで使用して別のプロパティを操作することもできますし、onWheel を実装してホイールイベントを直接処理することもできます。

WheelHandlerは、デフォルトでは回転するマウスホイールだけを処理します。これは、acceptedDevices を設定することで変更できます。

MouseArea,Flickable,Qt Quick Examples - Pointer Handlersも参照してください

プロパティの説明

acceptedDevices : flags

このハンドラをアクティブにできるポインティングデバイスのタイプ。

デフォルトでは、このプロパティはPointerDevice.Mouse に設定されており、実際のマウスホイールからのイベントのみに反応するようになっています。

WheelHandler は、acceptedDevices を に設定することで、マウスホイールとタッチパッドの両方のスクロールに反応するようにすることができます。PointerDevice.Mouse | PointerDevice.TouchPad

注: マウス以外のハードウェア(タッチセンシティブのワコムタブレットやLinuxラップトップのタッチパッドなど)の中には、ジェスチャーから実際のホイールイベントを生成するものがある。acceptedDevices がデフォルト値のままであっても、WheelHandler はそれらのイベントにホイールイベントとして応答する。


acceptedModifiers : flags

このプロパティが設定されると、ホイール・イベントに反応するために、指定されたキーボード修飾子が押される必要があり、そうでなければ無視される。

このプロパティがQt.KeyboardModifierMask (デフォルト値)に設定されている場合、WheelHandler は修飾キーを無視する。

例えば、Item は2つのハンドラを持つことができ、1つは必要なキーボード修飾子が押された場合のみ有効になり、もう1つはどの修飾子が押されてもイベントを無視する:

import QtQuick

Rectangle {
    width: 170; height: 120
    color: "green"; antialiasing: true

    WheelHandler {
        property: "rotation"
        acceptedModifiers: Qt.ControlModifier
    }

    WheelHandler {
        property: "scale"
        acceptedModifiers: Qt.NoModifier
    }
}

使用可能な修飾子は以下の通りです:

定数説明
NoModifier修飾キーは使用できません。
ShiftModifierキーボードのShiftキーが押されていなければならない。
ControlModifierキーボードの Ctrl キーが押されていなければならない。
AltModifierキーボードのAltキーが押されていること。
MetaModifierキーボードのMetaキーが押されていなければならない。
KeypadModifierキーパッドのボタンが押されていること。
GroupSwitchModifierX11のみ(Windowsではコマンドライン引数で有効にしない)。キーボードのMode_switchキーが押されていなければならない。
KeyboardModifierMaskハンドラはどの修飾子が押されても気にしない。

Qt::KeyboardModifierも参照のこと


active : bool [read-only]

これは、WheelHandler が最近QWheelEvent を見て、そのプロパティを最新に保ち、そのターゲットをアクティブに操作しているときはいつでも、true を保持します(もしあれば)。

activeTimeout参照


activeTimeout : real

これ以上 wheel イベントを受信しないと、active プロパティがfalse に戻るまでの時間を秒単位で指定します。デフォルトは0.1 (100 ms)。

いくつかのタッチパッドからのイベントなど、WheelHandlerscroll phase 情報を含むイベントを処理する場合、active プロパティはQt::ScrollEnd フェーズのイベントを受信するとすぐにfalse になります。しかし、従来のホイール付きマウスはスクロールフェーズを提供しません。マウスは、ユーザーがスクロールを停止することを決定したときを検出できないため、active プロパティは、この時間が経過した後にfalse に遷移します。

QWheelEvent::phase()も参照してください


blocking : bool [since 6.3]

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

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


enabled : bool

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


invertible : bool

QWheelEvent::invertedtrue の場合、プロパティの変更方向を逆にするかどうか。デフォルトはtrue

オペレーティングシステムが、スクロールを指の動きと同じ方向にする「自然スクロール」設定を持っている場合、このプロパティがtrue に設定され、WheelHandlerターゲットのプロパティを直接設定する場合、動きの方向はシステム設定に対応する。このプロパティがfalse に設定されている場合、rotation を反転させ、移動方向が常に指の移動方向と同じになるようにする。


margin : real

WheelHandler が反応できるparent 項目の境界を超えたマージン。例えば、margin10 に設定されている場合、カーソルをアイテムの可視エッジから 10 ピクセル外側まで配置しても、ホイールに反応します:

import QtQuick

Rectangle {
    width: 170; height: 120
    color: "green"; antialiasing: true

    WheelHandler {
        property: "rotation"
        margin: 10
    }
}

デフォルト値は0 です。


orientation : enumeration

どのホイールに反応するか。デフォルトはQt.Vertical です。

すべてのマウスにHorizontal ホイールがあるわけではありません。ホイールを横に傾けることでエミュレートされることもあります。タッチパッドは通常、縦方向と横方向の両方のホイールイベントを生成できる。


parent : Item

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

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


point : handlerPoint [read-only]

eventPoint 現在扱われている点。現在扱われている点がない場合、このオブジェクトはデフォルト値(すべての座標が0)にリセットされます。


property : string

マウスホ イ ールが回転 さ れた と き にタ ーゲ ッ ト上で変更 さ れ る プ ロ パテ ィ 。

デフォルトはプロパティなし(空文字列)です。ターゲットのプロパティが自動的に変更されない場合、バインディングを使用して任意の方法でマウスホイールの回転に反応させることができます。

任意の数値プロパティを調整するためにマウスホイールを使用することができます。た と えば、propertyx に設定 さ れてい る と き は、タ ーゲ ッ トはホイールの回転に伴って水平方向に移動 し ます。以下のプロパティは特別な動作をします:

定数説明
scalescale は、 で説明されているように、非線形に変更されます。 が の場合、 と プロパティは同時に調整され、ユーザーはマウスカーソルの下のポイントに効果的にズームインまたはズームアウトします。targetScaleMultiplier targetTransformAroundCursor true x y
rotationrotation rotation targetTransformAroundCursor が の場合、l{ }{x} プロパティと プロパティが同時に調整され、ユーザがマウスカーソル下の点を中心にアイテムを効果的に回転できるようになります。trueQQuickItem::x y

指定されたターゲットプロパティの調整は、常にrotationScale でスケーリングされる。


rotation : real

このプロパティが最後に設定されたときから、マウスホイールが回転された角度をホイール度で表す。

正の値は、ホイールが上/右に回転されたことを示し、負の値は、ホイールが下/左に回転されたことを示す。

基本的なマウスのクリックホイールは15度単位で動作します。

起動時のデフォルトは0 です。プログラムによっていつでも任意の値に設定することができます。ユーザーがマウスホイールを回転させると、値が調整されます。

orientationも参照のこと


rotationScale : real

rotation プロパティに適用されるスケーリングと、ターゲット・アイテムのproperty に適用されるスケーリング(もしあれば)。デフォルトは 1 で、rotation は回転度単位になります。負の数を設定すると、マウスホイールの回転方向の効果を反転させることができます。


target : Item

このハンドラが操作するアイテム。

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


targetScaleMultiplier : real

rotation が 15 度変化するたびに、ターゲット scale が乗算される量。これは、property"scale" のときのみ関係する。

scale にはtargetScaleMultiplier angleDelta *rotationScale / 15 が掛けられる。デフォルトは2 1/3 で、これはrotationScale がデフォルト値のままで、マウスホイールが1回 "クリック" (15度) 回転されると、ターゲットがおよそ1.25倍拡大されることを意味します。3回 "クリック" すると、ホイールの回転方向によって、そのサイズは2倍または半分になります。ホイールを2回クリックするごとに2倍または半分にしたい場合は、2 1/2(1.4142)に設定します。ホイールの回転方向と逆にスケールさせたい場合は、rotationScale に負の値を設定します。


targetTransformAroundCursor : bool

property が調整されている間、ターゲットがマウスカーソルの位置を中心に変形するように自動的に再配置されるべきかどうか。デフォルトはtrue

property"rotation" に設定され、targetTransformAroundCursor がtrue である場合、ホイールが回転されるにつれて、ターゲットアイテムはマウスカーソルの位置を中心にその場で回転する。targetTransformAroundCursorfalse の場合、代わりにtransformOrigin を中心に回転する。


シグナル・ドキュメント

wheel(WheelEvent event)

このシグナルは、このハンドラがQWheelEvent 型のevent を受信するたびに発行されます : つまり、ホイールが移動されるか、スクロールジェスチャが更新されるたびに発行されます。

注: 対応するハンドラはonWheel です。


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