WheelHandler QML Type
マウスホイールのハンドラ。詳細...
Import Statement: | import QtQuick |
Inherits: |
プロパティ
- acceptedDevices : flags
- acceptedModifiers : flags
- active : bool
- activeTimeout : real
- blocking : bool
(since 6.3)
- enabled : bool
- invertible : bool
- margin : real
- orientation : enumeration
- parent : Item
- point : handlerPoint
- property : string
- rotation : real
- rotationScale : real
- target : Item
- targetScaleMultiplier : real
- targetTransformAroundCursor : bool
信号
- 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 | キーパッドのボタンが押されていること。 |
GroupSwitchModifier | X11のみ(Windowsではコマンドライン引数で有効にしない)。キーボードのMode_switchキーが押されていなければならない。 |
KeyboardModifierMask | ハンドラはどの修飾子が押されても気にしない。 |
Qt::KeyboardModifierも参照のこと 。
active : bool |
これは、WheelHandler が最近QWheelEvent を見て、そのプロパティを最新に保ち、そのターゲットをアクティブに操作しているときはいつでも、true
を保持します(もしあれば)。
activeTimeout も参照 。
activeTimeout : real |
これ以上 wheel イベントを受信しないと、active プロパティがfalse
に戻るまでの時間を秒単位で指定します。デフォルトは0.1
(100 ms)。
いくつかのタッチパッドからのイベントなど、WheelHandler がscroll phase 情報を含むイベントを処理する場合、active プロパティはQt::ScrollEnd フェーズのイベントを受信するとすぐにfalse
になります。しかし、従来のホイール付きマウスはスクロールフェーズを提供しません。マウスは、ユーザーがスクロールを停止することを決定したときを検出できないため、active プロパティは、この時間が経過した後にfalse
に遷移します。
QWheelEvent::phase()も参照してください 。
blocking : bool |
このハンドラが、その後ろにある他のアイテムやハンドラが同じホイールイベントを処理するのを防ぐかどうか。このプロパティはデフォルトでtrue
です。
このプロパティは Qt 6.3 で導入されました。
enabled : bool |
PointerHandler が無効な場合、すべてのイベントを拒否し、シグナルは発せられません。
invertible : bool |
QWheelEvent::inverted がtrue
の場合、プロパティの変更方向を逆にするかどうか。デフォルトはtrue
。
オペレーティングシステムが、スクロールを指の動きと同じ方向にする「自然スクロール」設定を持っている場合、このプロパティがtrue
に設定され、WheelHandler がターゲットのプロパティを直接設定する場合、動きの方向はシステム設定に対応する。このプロパティがfalse
に設定されている場合、rotation を反転させ、移動方向が常に指の移動方向と同じになるようにする。
margin : real |
WheelHandler が反応できるparent 項目の境界を超えたマージン。例えば、margin
が10
に設定されている場合、カーソルをアイテムの可視エッジから 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 |
eventPoint 現在扱われている点。現在扱われている点がない場合、このオブジェクトはデフォルト値(すべての座標が0)にリセットされます。
property : string |
マウスホ イ ールが回転 さ れた と き にタ ーゲ ッ ト上で変更 さ れ る プ ロ パテ ィ 。
デフォルトはプロパティなし(空文字列)です。ターゲットのプロパティが自動的に変更されない場合、バインディングを使用して任意の方法でマウスホイールの回転に反応させることができます。
任意の数値プロパティを調整するためにマウスホイールを使用することができます。た と えば、property
がx
に設定 さ れてい る と き は、タ ーゲ ッ トはホイールの回転に伴って水平方向に移動 し ます。以下のプロパティは特別な動作をします:
定数 | 説明 |
---|---|
scale | scale は、 で説明されているように、非線形に変更されます。 が の場合、 と プロパティは同時に調整され、ユーザーはマウスカーソルの下のポイントに効果的にズームインまたはズームアウトします。targetScaleMultiplier targetTransformAroundCursor true x y |
rotation | rotation rotation targetTransformAroundCursor が の場合、l{ }{x} プロパティと プロパティが同時に調整され、ユーザがマウスカーソル下の点を中心にアイテムを効果的に回転できるようになります。true QQuickItem::x y |
指定されたターゲットプロパティの調整は、常にrotationScale でスケーリングされる。
rotation : real |
このプロパティが最後に設定されたときから、マウスホイールが回転された角度をホイール度で表す。
正の値は、ホイールが上/右に回転されたことを示し、負の値は、ホイールが下/左に回転されたことを示す。
基本的なマウスのクリックホイールは15度単位で動作します。
起動時のデフォルトは0
です。プログラムによっていつでも任意の値に設定することができます。ユーザーがマウスホイールを回転させると、値が調整されます。
orientationも参照のこと 。
rotationScale : real |
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
である場合、ホイールが回転されるにつれて、ターゲットアイテムはマウスカーソルの位置を中心にその場で回転する。targetTransformAroundCursor
がfalse
の場合、代わりに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.