WheelHandler QML Type

Handler für das Mausrad. Mehr...

Import Statement: import QtQuick
Inherits:

SinglePointHandler

Eigenschaften

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:

KonstanteBeschreibung
NoModifierKeine Modifikatortaste ist erlaubt.
ShiftModifierEs muss eine Umschalttaste auf der Tastatur gedrückt werden.
ControlModifierEine Strg-Taste auf der Tastatur muss gedrückt sein.
AltModifierEine Alt-Taste auf der Tastatur muss gedrückt sein.
MetaModifierEine Meta-Taste auf der Tastatur muss gedrückt sein.
KeypadModifierEine Taste der Tastatur muss gedrückt sein.
GroupSwitchModifierNur X11 (sofern nicht unter Windows durch ein Befehlszeilenargument aktiviert). Eine Mode_switch-Taste auf der Tastatur muss gedrückt sein.
KeyboardModifierMaskDem Handler ist es egal, welche Modifikatoren gedrückt werden.

Siehe auch Qt::KeyboardModifier.


active : bool [read-only]

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 [since 6.3]

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 [read-only]

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:

KonstanteBeschreibung
scalescale 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.
rotationrotation 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.