Auf dieser Seite

WheelHandler QML Type

Handler für das Mausrad. Mehr...

Import Statement: import QtQuick
Inherits:

SinglePointHandler

Eigenschaften

Signale

  • wheel(WheelEvent event)

Ausführliche Beschreibung

WheelHandler ist ein Handler, der dazu dient, bestimmte numerische Eigenschaften eines Elements interaktiv zu verändern, während der Benutzer das Mausrad dreht. Wie andere Eingabe-Handler auch, verändert er standardmäßig die Eigenschaft „ target “. Deklarieren Sie „ property “, um zu steuern, welche Ziel-Eigenschaft verändert 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 dem „WheelHandler“ (sowie mit anderen Eingabe-Handlern) sehr nützlich, um den zulässigen Wertebereich der Zieleigenschaft festzulegen. Beispielsweise ist es möglich, das Scrollen mithilfe einer Kombination aus „WheelHandler“ und „ DragHandler “ zu implementieren, um die Eigenschaft „ y “ des scrollbaren Elements zu ändern, wenn der Benutzer das Mausrad dreht oder das Element auf einem Touchscreen zieht, und „ BoundaryRule “ zu verwenden, 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 gilt: Wenn „ property “ nicht festgelegt ist oder „ target “ den Wert „null“ hat, nimmt „WheelHandler“ automatisch keine Änderungen vor; die Eigenschaft „ rotation “ kann jedoch in einer Bindung verwendet werden, um eine andere Eigenschaft zu beeinflussen, oder Sie können „ onWheel “ implementieren und das Mausrad-Ereignis direkt verarbeiten.

WheelHandler verarbeitet standardmäßig nur ein rotierendes Mausrad; dies lässt sich durch Setzen von ` acceptedDevices` ändern.

Siehe auch „ MouseArea“ , „ Flickable “ und „Qt Quick – Beispiele – Zeiger-Handler“.

Dokumentation zu den Eigenschaften

acceptedDevices : flags

Die Arten von Zeigegeräten, die diesen Handler auslösen können.

Standardmäßig ist diese Eigenschaft auf „ PointerDevice.Mouse “ gesetzt, sodass nur auf Ereignisse von einem tatsächlichen Mausrad reagiert wird.

WheelHandler Durch Setzen von `acceptedDevices` auf ` PointerDevice.Mouse | PointerDevice.TouchPad` kann der Handler so konfiguriert werden, dass er sowohl auf das Scrollen mit dem Mausrad als auch auf das Scrollen mit dem Touchpad reagiert.

Hinweis: Einige nicht-mausbasierte Geräte (wie beispielsweise ein berührungsempfindliches Wacom-Tablet oder das Touchpad eines Linux-Laptops) erzeugen durch Gesten echte Radereignisse. „ WheelHandler “ reagiert auf diese Ereignisse als Radereignisse, auch wenn „ acceptedDevices “ auf seinem Standardwert belassen wird.

acceptedModifiers : flags

Wenn diese Eigenschaft gesetzt ist, müssen die angegebenen Tastaturmodifikatoren gedrückt werden, damit das Rad auf Ereignisse reagiert; andernfalls werden diese ignoriert.

Ist diese Eigenschaft auf „ Qt.KeyboardModifierMask “ (Standardwert) gesetzt, ignoriert der „ WheelHandler “ die Modifikatortasten.

Beispielsweise könnte ein „ Item “ zwei Handler haben, von denen einer nur aktiviert ist, wenn die erforderliche Modifikatortaste gedrückt wird, während der andere Ereignisse ignoriert, wenn eine beliebige Modifikatortaste 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:

KonstanteBeschreibung
NoModifierEs ist keine Modifikatortaste zulässig.
ShiftModifierEine Umschalttaste auf der Tastatur muss gedrückt sein.
ControlModifierDie Strg-Taste auf der Tastatur muss gedrückt werden.
AltModifierDie Alt-Taste auf der Tastatur muss gedrückt werden.
MetaModifierDie Meta-Taste auf der Tastatur muss gedrückt werden.
KeypadModifierEine Taste auf dem Ziffernblock muss gedrückt werden.
GroupSwitchModifierNur X11 (es sei denn, die Funktion wurde unter Windows über ein Befehlszeilenargument aktiviert). Eine Mode_switch-Taste auf der Tastatur muss gedrückt werden.
KeyboardModifierMaskDem Handler ist es egal, welche Modifikatortasten gedrückt werden.

Siehe auch Qt::KeyboardModifier.

active : bool [read-only]

Dies gilt für true, wenn die Seite WheelHandler kürzlich eine QWheelEvent aufgerufen hat, ihre Eigenschaften auf dem neuesten Stand hält und ihre target (sofern vorhanden) aktiv bearbeitet.

Siehe auch activeTimeout.

activeTimeout : real

Die Zeitdauer in Sekunden, nach der die Eigenschaft „ active “ wieder auf „ false “ zurückgesetzt wird, wenn keine weiteren Radereignisse empfangen werden. Der Standardwert ist „ 0.1 “ (100 ms).

Wenn „ WheelHandler “ Ereignisse verarbeitet, die Informationen zur „ scroll phase “ enthalten – wie beispielsweise Ereignisse von bestimmten Touchpads –, wird die Eigenschaft „ active “ auf „ false “ gesetzt, sobald ein Ereignis mit der Phase „ Qt::ScrollEnd “ empfangen wird; in diesem Fall ist das Timeout nicht erforderlich. Eine herkömmliche Maus mit Scrollrad verfügt jedoch nicht über eine Scroll-Phase: Die Maus kann nicht erkennen, wann der Benutzer beschlossen hat, das Scrollen zu beenden, sodass die Eigenschaft „ active “ nach Ablauf dieser Zeit auf „ false “ wechselt.

Siehe auch „ QWheelEvent::phase()“.

blocking : bool [since 6.3]

Gibt an, ob dieser Handler verhindert, dass andere Elemente oder Handler, die hinter ihm liegen, dasselbe Mausrad-Ereignis verarbeiten. Diese Eigenschaft ist standardmäßig auf „ true “ gesetzt.

Diese Eigenschaft wurde in Qt 6.3 eingeführt.

enabled : bool

Wenn ein „ PointerHandler “ deaktiviert ist, werden alle Ereignisse abgelehnt und es werden keine Signale ausgegeben.

Wenn die Eigenschaft „ parent “ eines „ PointerHandler “ auf „ disabled “ gesetzt ist, wird der Handler ebenfalls effektiv deaktiviert, selbst wenn die Eigenschaft „ enabled “ weiterhin auf „ true “ gesetzt ist.

Hinweis: „ HoverHandler “ verhält sich anders: Weitere Informationen finden Sie in der Dokumentation zur Eigenschaft „ enabled “.

invertible : bool

Gibt an, ob die Richtung der Eigenschaftsänderung umgekehrt werden soll, wenn „ QWheelEvent::inverted “ auf „ true “ gesetzt ist. Die Standardeinstellung lautet „ true “.

Wenn das Betriebssystem über eine Einstellung für „natürliches Scrollen“ verfügt, bei der das Scrollen in die gleiche Richtung wie die Fingerbewegung erfolgt, entspricht die Bewegungsrichtung der Systemeinstellung, sofern diese Eigenschaft auf „ true “ gesetzt ist und „ WheelHandler “ eine Eigenschaft direkt auf „ target “ festlegt. Ist diese Eigenschaft auf „ false “ gesetzt, wird die „ rotation “ umgekehrt, sodass die Bewegungsrichtung immer mit der Richtung der Fingerbewegung übereinstimmt.

margin : real

Der Randbereich außerhalb der Grenzen des Elements „ parent “, in dem das „ WheelHandler “ reagieren kann. Wenn beispielsweise „ margin “ auf „ 10 “ gesetzt ist, können Sie den Cursor bis zu 10 Pixel außerhalb des sichtbaren Randes des Elements platzieren, und es reagiert dennoch auf das Scrollrad:

import QtQuick

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

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

Der Standardwert lautet „ 0 “.

orientation : enumeration

Auf welches Rad soll reagiert werden? Die Standardeinstellung ist „ Qt.Vertical “.

Nicht jede Maus verfügt über ein „ Horizontal “-Rad; manchmal wird diese Funktion durch seitliches Neigen des Rads emuliert. Ein Touchpad kann in der Regel sowohl vertikale als auch horizontale Radereignisse erzeugen.

parent : Item

Die „ Item “, die den Geltungsbereich des Handlers darstellt; das „Item“, in dem er deklariert wurde. Der Handler verarbeitet Ereignisse im Namen dieses „Item“, was bedeutet, dass ein Zeigerereignis relevant ist, wenn mindestens eines seiner „ eventPoints “ innerhalb des „Item“ auftritt. Anfänglich ist „ target() “ identisch, kann jedoch neu zugewiesen werden.

Siehe auch „ target “ und „ QObject::parent()“.

point : handlerPoint [read-only]

Das Objekt „ eventPoint “ wird gerade bearbeitet. Wenn derzeit kein Punkt bearbeitet wird, wird dieses Objekt auf die Standardwerte zurückgesetzt (alle Koordinaten sind 0).

property : string

Die Eigenschaft, die bei Drehung des Mausrads auf dem „ target “ geändert werden soll.

Standardmäßig ist keine Eigenschaft festgelegt (leere Zeichenfolge). Wenn keine Zieleigenschaft automatisch geändert wird, können Sie Bindungen verwenden, um auf beliebige Weise auf das Drehen des Mausrads zu reagieren.

Sie können das Mausrad verwenden, um jede numerische Eigenschaft anzupassen. Ist beispielsweise „ property “ auf „ x “ gesetzt, bewegt sich „ target “ horizontal, wenn das Mausrad gedreht wird. Die folgenden Eigenschaften weisen ein spezielles Verhalten auf:

KonstanteBeschreibung
scalescale wird nichtlinear geändert, wie unter „ targetScaleMultiplier “ beschrieben. Wenn „ targetTransformAroundCursor “ auf „ true “ gesetzt ist, werden die Eigenschaften „ x “ und „ y “ gleichzeitig angepasst, sodass der Benutzer den Punkt unter dem Mauszeiger effektiv vergrößern oder verkleinern kann.
rotationrotation wird auf „ rotation “ gesetzt. Ist „ targetTransformAroundCursor “ gleich „ true “, werden die Eigenschaften „l{QQuickItem::x}{x}“ und „ y “ gleichzeitig angepasst, sodass der Benutzer das Element effektiv um den Punkt unter dem Mauszeiger drehen kann.

Die Anpassung der jeweiligen Zieleigenschaft wird stets mit rotationScale skaliert.

rotation : real

Der Winkel, um den das Mausrad seit der letzten Festlegung 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 Maus-Klickrad arbeitet in Schritten von 15 Grad.

Der Standardwert beim Start beträgt „ 0 “. Er kann jederzeit programmgesteuert auf einen beliebigen Wert gesetzt werden. Der Wert wird fortlaufend angepasst, sobald der Benutzer das Mausrad dreht.

Siehe auch ` orientation`.

rotationScale : real

Der Skalierungsfaktor, der auf die Eigenschaft „ rotation “ sowie gegebenenfalls auf die Eigenschaft „ property “ des Elements „ target “ angewendet werden soll. Der Standardwert ist 1, sodass „ rotation “ in Grad als Drehrichtung angegeben wird. Der Wert kann auf eine negative Zahl gesetzt werden, um die Wirkung der Drehrichtung des Mausrads umzukehren.

target : Item

Das Element, auf das dieser Handler einwirkt.

Standardmäßig entspricht es dem „ parent “, also dem Element, in dem der Handler deklariert ist. Manchmal kann es jedoch sinnvoll sein, das Ziel auf ein anderes Element festzulegen, um Ereignisse in einem Element zu verarbeiten, aber ein anderes Element zu bearbeiten; oder auf „ null “, um das Standardverhalten zu deaktivieren und stattdessen etwas anderes auszuführen.

targetScaleMultiplier : real

Der Wert, mit dem die „ target “ ( scale ) multipliziert werden soll, wenn sich die „ rotation “ um 15 Grad ändert. Dies ist nur relevant, wenn „ property “ gleich „ "scale" “ ist.

Der Wert „ 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, der Wert „ target “ um etwa 1,25 skaliert wird; Nach drei „Klicks“ wird die Größe je nach Drehrichtung des Rads verdoppelt oder halbiert. Wenn Sie möchten, dass die Größe alle zwei Klicks des Rads verdoppelt oder halbiert wird, setzen Sie diesen Wert auf „ 2 “ 1/2 (1,4142). Wenn Sie möchten, dass die Skalierung in die entgegengesetzte Richtung erfolgt, wenn das Rad gedreht wird, setzen Sie „ rotationScale “ auf einen negativen Wert.

targetTransformAroundCursor : bool

Legt fest, ob die „ target “ automatisch so neu positioniert werden soll, dass sie um die Position des Mauszeigers transformiert wird, während die „ property “ angepasst wird. Die Standardeinstellung lautet „ true “.

Wenn „ property “ auf „ "rotation" “ und „targetTransformAroundCursor“ auf „ true “ gesetzt ist, dreht sich das Element „ target “ beim Drehen des Rads an Ort und Stelle um die Position des Mauszeigers. Ist „ targetTransformAroundCursor “ auf „ false “ gesetzt, dreht es sich stattdessen um seinen „ transformOrigin “.

Signal-Dokumentation

wheel(WheelEvent event)

Dieses Signal wird jedes Mal ausgelöst, wenn dieser Handler ein „ event “ vom Typ „ QWheelEvent “ empfängt: das heißt, jedes Mal, wenn das Rad bewegt wird oder die Scroll-Geste aktualisiert wird.

Hinweis: Der entsprechende Handler ist „ onWheel “.

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