WheelHandler QML Type
Handler für das Mausrad. Mehr...
Import Statement: | import QtQuick |
Inherits: |
Eigenschaften
- 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
Signale
- wheel(WheelEvent event)
Detaillierte Beschreibung
WheelHandler ist ein Handler, der verwendet wird, um eine numerische Eigenschaft eines Elements interaktiv zu manipulieren, wenn der Benutzer das Mausrad dreht. Wie andere Input Handler manipuliert er standardmäßig seine target. Deklarieren Sie property, um zu steuern, welche Zieleigenschaft manipuliert werden soll:
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 ist in Kombination mit WheelHandler (wie auch mit anderen Input Handlern) sehr nützlich, um den zulässigen Wertebereich für die Zieleigenschaft zu deklarieren. Zum Beispiel ist es möglich, einen Bildlauf mit einer Kombination aus WheelHandler und DragHandler zu implementieren, um die Eigenschaft y des scrollbaren Elements zu manipulieren, wenn der Benutzer das Rad dreht oder das Element auf einem Touchscreen zieht, und BoundaryRule, um den Bewegungsbereich von oben nach unten zu begrenzen:
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 } } } }
Alternativ, wenn property nicht gesetzt ist oder target null ist, wird WheelHandler nicht automatisch irgendetwas manipulieren; aber die rotation Eigenschaft kann in einer Bindung verwendet werden, um eine andere Eigenschaft zu manipulieren, oder Sie können onWheel
implementieren und das Rad-Ereignis direkt behandeln.
WheelHandler verarbeitet standardmäßig nur ein rotierendes Mausrad; dies kann durch Setzen von acceptedDevices geändert werden.
Siehe auch MouseArea, Flickable, und Qt Quick Beispiele - Zeiger-Handler.
Dokumentation der Eigenschaften
acceptedDevices : flags |
Die Typen von Zeigegeräten, die diesen Handler aktivieren können.
Standardmäßig ist diese Eigenschaft auf PointerDevice.Mouse gesetzt, um nur auf Ereignisse von einem tatsächlichen Mausrad zu reagieren.
WheelHandler Der Handler kann so eingestellt werden, dass er sowohl auf Mausrad- als auch auf Touchpad-Scrolling reagiert, indem acceptedDevices auf PointerDevice.Mouse | PointerDevice.TouchPad
gesetzt wird.
Hinweis: Einige Nicht-Maus-Hardware (z. B. ein berührungsempfindliches Wacom-Tablett oder ein Linux-Laptop-Touchpad) erzeugt echte Rad-Ereignisse aus Gesten. WheelHandler reagiert auf diese Ereignisse als Rad-Ereignisse, auch wenn acceptedDevices
auf seinen Standardwert gesetzt bleibt.
acceptedModifiers : flags |
Wenn diese Eigenschaft gesetzt ist, müssen die angegebenen Tastaturmodifikatoren gedrückt werden, um auf Rad-Ereignisse zu reagieren, andernfalls werden sie ignoriert.
Wenn diese Eigenschaft auf Qt.KeyboardModifierMask
(den Standardwert) gesetzt ist, ignoriert WheelHandler die Modifier-Tasten.
Ein Item könnte beispielsweise zwei Handler haben, von denen einer nur aktiviert wird, wenn der erforderliche Tastaturmodifikator gedrückt wird, während der andere die Ereignisse ignoriert, wenn irgendein Modifikator gedrückt wird:
import QtQuick Rectangle { width: 170; height: 120 color: "green"; antialiasing: true WheelHandler { property: "rotation" acceptedModifiers: Qt.ControlModifier } WheelHandler { property: "scale" acceptedModifiers: Qt.NoModifier } }
Die verfügbaren Modifikatoren sind wie folgt:
Konstante | Beschreibung |
---|---|
NoModifier | Keine Modifikatortaste ist erlaubt. |
ShiftModifier | Es muss eine Umschalttaste auf der Tastatur gedrückt werden. |
ControlModifier | Eine Strg-Taste auf der Tastatur muss gedrückt sein. |
AltModifier | Eine Alt-Taste auf der Tastatur muss gedrückt sein. |
MetaModifier | Eine Meta-Taste auf der Tastatur muss gedrückt sein. |
KeypadModifier | Eine Taste der Tastatur muss gedrückt sein. |
GroupSwitchModifier | Nur X11 (sofern nicht unter Windows durch ein Befehlszeilenargument aktiviert). Eine Mode_switch-Taste auf der Tastatur muss gedrückt sein. |
KeyboardModifierMask | Dem Handler ist es egal, welche Modifikatoren gedrückt werden. |
Siehe auch Qt::KeyboardModifier.
active : bool |
Dies hält true
immer dann, wenn WheelHandler kürzlich ein QWheelEvent gesehen hat, seine Eigenschaften auf dem neuesten Stand hält und sein Ziel aktiv manipuliert (falls vorhanden).
Siehe auch activeTimeout.
activeTimeout : real |
Die Zeitspanne in Sekunden, nach der die Eigenschaft active zu false
zurückkehrt, wenn keine weiteren Rad-Ereignisse empfangen werden. Der Standardwert ist 0.1
(100 ms).
Wenn WheelHandler Ereignisse verarbeitet, die scroll phase Informationen enthalten, wie z. B. Ereignisse von einigen Touchpads, wird die Eigenschaft active zu false
, sobald ein Ereignis mit der Phase Qt::ScrollEnd empfangen wird; in diesem Fall ist der Timeout nicht notwendig. Eine herkömmliche Maus mit einem Rad bietet jedoch keine Scroll-Phase: Die Maus kann nicht erkennen, wann der Benutzer beschlossen hat, den Bildlauf zu beenden, so dass die Eigenschaft active nach Ablauf dieser Zeit in false
übergeht.
Siehe auch QWheelEvent::phase().
blocking : bool |
Ob dieser Handler verhindert, dass andere Elemente oder Handler hinter ihm das gleiche Rad-Ereignis behandeln. Diese Eigenschaft ist standardmäßig true
.
Diese Eigenschaft wurde in Qt 6.3 eingeführt.
enabled : bool |
Wenn ein PointerHandler deaktiviert ist, werden alle Ereignisse abgelehnt und keine Signale ausgegeben.
invertible : bool |
Ob die Richtung der Eigenschaftsänderung umgekehrt werden soll oder nicht, wenn QWheelEvent::inverted true
ist. Die Standardeinstellung ist true
.
Wenn das Betriebssystem über eine Einstellung für den "natürlichen Bildlauf" verfügt, die bewirkt, dass der Bildlauf in dieselbe Richtung wie die Fingerbewegung erfolgt, dann entspricht die Bewegungsrichtung der Systemeinstellung, wenn diese Eigenschaft auf true
gesetzt ist und WheelHandler eine Eigenschaft direkt auf das Ziel setzt. Wenn diese Eigenschaft auf false
eingestellt ist, wird rotation invertiert, so dass die Bewegungsrichtung immer mit der Richtung der Fingerbewegung übereinstimmt.
margin : real |
Der Spielraum außerhalb der Grenzen des Elements parent, innerhalb dessen WheelHandler reagieren kann. Wenn zum Beispiel margin
auf 10
eingestellt ist, können Sie den Cursor bis zu 10 Pixel außerhalb der sichtbaren Kante des Elements platzieren, und es wird immer noch auf das Rad reagieren:
import QtQuick Rectangle { width: 170; height: 120 color: "green"; antialiasing: true WheelHandler { property: "rotation" margin: 10 } }
Der Standardwert ist 0
.
orientation : enumeration |
Auf welches Rad soll reagiert werden. Der Standardwert ist Qt.Vertical
.
Nicht jede Maus hat ein Horizontal
Rad; manchmal wird es durch seitliches Kippen des Rades emuliert. Ein Touchpad kann normalerweise sowohl vertikale als auch horizontale Rad-Ereignisse erzeugen.
parent : Item |
Die Item, die den Anwendungsbereich des Handlers darstellt; das Element, in dem er deklariert wurde. Der Handler behandelt Ereignisse im Namen dieses Elements, was bedeutet, dass ein Zeigerereignis relevant ist, wenn mindestens eines seiner eventPoints im Inneren des Elements auftritt. Ursprünglich ist target() derselbe, aber er kann neu zugewiesen werden.
Siehe auch target und QObject::parent().
point : handlerPoint |
Der eventPoint, der gerade bearbeitet wird. Wenn derzeit kein Punkt bearbeitet wird, wird dieses Objekt auf die Standardwerte zurückgesetzt (alle Koordinaten sind 0).
property : string |
Die Eigenschaft, die beim Drehen des Mausrads auf dem Ziel geändert werden soll.
Die Vorgabe ist keine Eigenschaft (leerer String). Wenn keine Zieleigenschaft automatisch geändert wird, können Sie Bindungen verwenden, um auf die Drehung des Mausrads auf beliebige Weise zu reagieren.
Sie können das Mausrad verwenden, um jede numerische Eigenschaft anzupassen. Wenn z. B. property
auf x
gesetzt ist, wird das Ziel horizontal verschoben, wenn das Rad gedreht wird. Die folgenden Eigenschaften haben ein besonderes Verhalten:
Konstante | Beschreibung |
---|---|
scale | scale wird auf nicht-lineare Weise verändert, wie unter targetScaleMultiplier beschrieben. Wenn targetTransformAroundCursor auf true steht, werden die Eigenschaften x und y gleichzeitig angepasst, so dass der Benutzer effektiv in den Punkt unter dem Mauszeiger hinein- oder herauszoomen kann. |
rotation | rotation rotation Wenn targetTransformAroundCursor gleich true ist, werden die Eigenschaften l{QQuickItem::x}{x} und y gleichzeitig angepasst, so dass der Benutzer das Element effektiv um den Punkt unter dem Mauszeiger drehen kann. |
Die Anpassung der angegebenen Zieleigenschaft wird immer um rotationScale skaliert.
rotation : real |
Der Winkel, um den das Mausrad seit der letzten Einstellung dieser Eigenschaft gedreht wurde, in Radgrad.
Ein positiver Wert bedeutet, dass das Rad nach oben/rechts gedreht wurde; ein negativer Wert bedeutet, dass das Rad nach unten/links gedreht wurde.
Ein einfaches Mausklick-Rad arbeitet in Schritten von 15 Grad.
Die Voreinstellung ist 0
beim Start. Er kann jederzeit programmatisch auf einen beliebigen Wert gesetzt werden. Der Wert wird von da an angepasst, wenn der Benutzer das Mausrad dreht.
Siehe auch orientation.
rotationScale : real |
Die Skalierung, die auf die Eigenschaft rotation und ggf. auf property auf dem Zielelement angewendet wird. Der Standardwert ist 1, so dass rotation in Einheiten von Drehungsgraden angegeben wird. Sie kann auf eine negative Zahl gesetzt werden, um den Effekt der Drehrichtung des Mausrades umzukehren.
target : Item |
Das Element, das von diesem Handler bearbeitet wird.
Standardmäßig ist es dasselbe wie parent, das Element, innerhalb dessen der Handler deklariert ist. Es kann jedoch manchmal nützlich sein, das Ziel auf ein anderes Element zu setzen, um Ereignisse innerhalb eines Elements zu behandeln, aber ein anderes zu manipulieren; oder auf null
, um das Standardverhalten zu deaktivieren und stattdessen etwas anderes zu tun.
targetScaleMultiplier : real |
Der Betrag, mit dem das Ziel scale multipliziert werden soll, wenn sich rotation um 15 Grad ändert. Dies ist nur relevant, wenn property gleich "scale"
ist.
Die scale
wird mit targetScaleMultiplier
angleDelta * rotationScale / 15 multipliziert. Der Standardwert ist 2
1/3, was bedeutet, dass, wenn rotationScale auf seinem Standardwert belassen wird und das Mausrad um einen "Klick" (15 Grad) gedreht wird, das Ziel um etwa 1,25 skaliert wird; nach drei "Klicks" wird seine Größe verdoppelt oder halbiert, je nachdem, in welche Richtung das Rad gedreht wird. Wenn Sie möchten, dass sich die Zielscheibe alle 2 Klicks verdoppelt oder halbiert, setzen Sie den Wert auf 2
1/2 (1,4142). Wenn die Skalierung in die entgegengesetzte Richtung erfolgen soll, wenn das Rad gedreht wird, setzen Sie rotationScale
auf einen negativen Wert.
targetTransformAroundCursor : bool |
Ob das Ziel automatisch neu positioniert werden soll, so dass es um die Position des Mauszeigers herum transformiert wird, während die property angepasst wird. Der Standardwert ist true
.
Wenn property auf "rotation"
und targetTransformAroundCursor auf true
gesetzt ist, wird das Zielelement beim Drehen des Rads um die Position des Mauszeigers gedreht. Wenn targetTransformAroundCursor
auf false
gesetzt ist, dreht es sich stattdessen um seine transformOrigin.
Signal Dokumentation
wheel(WheelEvent event) |
Dieses Signal wird jedes Mal ausgegeben, wenn dieser Handler ein event vom Typ QWheelEvent empfängt, d. h. jedes Mal, wenn das Rad bewegt oder die Bildlaufgeste aktualisiert wird.
Hinweis: Der entsprechende Handler ist 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.