Auf dieser Seite

Tumbler QML Type

Drehbares Rad mit auswählbaren Elementen. Mehr...

Import Statement: import QtQuick.Controls
Inherits:

Control

Eigenschaften

Zugehörige Eigenschaften

Methoden

  • void positionViewAtIndex(int index, PositionMode mode) (since QtQuick.Controls 2.5 (Qt 5.12))

Ausführliche Beschreibung

Tumbler {
    model: 5
    // ...
}

Mit dem Tumbler kann der Benutzer eine Option aus einem drehbaren „Rad“ mit Elementen auswählen. Dies ist nützlich, wenn zu viele Optionen zur Auswahl stehen – beispielsweise bei einem RadioButton – und zu wenige, um die Verwendung eines editierbaren SpinBox zu erfordern. Es ist praktisch, da keine Tastatureingabe erforderlich ist und die Auswahl bei einer großen Anzahl von Elementen an beiden Enden automatisch weitergeht.

Die API ähnelt der von Ansichten wie ListView und PathView; ein model und ein delegate können festgelegt werden, und die Eigenschaften count und currentItem bieten schreibgeschützten Zugriff auf Informationen zur Ansicht. Um die Ansicht an einem bestimmten Index zu positionieren, verwenden Sie positionViewAtIndex().

Im Gegensatz zu Ansichten wie PathView und ListView gibt es jedoch immer ein aktuelles Element (sofern das Modell nicht leer ist). Das bedeutet: Wenn count gleich 0 ist, ist currentIndex gleich -1. In allen anderen Fällen ist es größer oder gleich 0.

Standardmäßig „ wraps “ der Tumbler, wenn er den oberen oder unteren Rand erreicht, solange mehr Elemente im Modell vorhanden sind als sichtbar sind; das heißt, wenn „ count “ größer ist als „ visibleItemCount “:

import QtQuick
import QtQuick.Window
import QtQuick.Controls

Rectangle {
    width: frame.implicitWidth + 10
    height: frame.implicitHeight + 10

    FontMetrics {
        id: fontMetrics
    }

    Component {
        id: delegateComponent

        Label {
            text: formatText(Tumbler.tumbler.count, modelData)
            opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2)
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            font.pixelSize: fontMetrics.font.pixelSize * 1.25

            function formatText(count, modelData) {
                var data = count === 12 ? modelData + 1 : modelData;
                return data.toString().length < 2 ? "0" + data : data;
            }
        }
    }

    Frame {
        id: frame
        padding: 0
        anchors.centerIn: parent

        Row {
            id: row

            Tumbler {
                id: hoursTumbler
                model: 12
                delegate: delegateComponent
            }

            Tumbler {
                id: minutesTumbler
                model: 60
                delegate: delegateComponent
            }

            Tumbler {
                id: amPmTumbler
                model: ["AM", "PM"]
                delegate: delegateComponent
            }
        }
    }
}

Siehe auch „Anpassen von Tumbler und Eingabesteuerelementen“.

Dokumentation zu den Eigenschaften

count : int [read-only]

Diese Eigenschaft enthält die Anzahl der Elemente im Modell.

currentIndex : int

Diese Eigenschaft enthält den Index des aktuellen Elements.

Der Wert dieser Eigenschaft lautet „ -1 “, wenn „ count “ gleich „ 0 “ ist. In allen anderen Fällen ist er größer oder gleich „ 0 “.

Siehe auch „ currentItem “ und „ positionViewAtIndex()“.

currentItem : Item [read-only]

Diese Eigenschaft enthält das Element am aktuellen Index.

Siehe auch „ currentIndex “ und „ positionViewAtIndex()“.

delegate : Component

Diese Eigenschaft enthält den Delegaten, der zur Anzeige der einzelnen Elemente verwendet wird.

Tumbler übernimmt nicht die Eigentumsrechte an dem Delegaten.

flickDeceleration : int

Diese Eigenschaft legt die Geschwindigkeit fest, mit der eine Wischbewegung abgebremst wird: Je höher der Wert, desto schneller verlangsamt sich die Bewegung, wenn der Benutzer die Wischbewegung per Berührung beendet. Beispielsweise ist „ 0.0001 “ nahezu „reibungslos“, während „ 10000 “ sich ziemlich „klebrig“ anfühlt.

Wenn „ wrap “ auf „true“ gesetzt ist (Standardeinstellung), lautet der Standardwert für „flickDeceleration“ „ 100 “. Andernfalls ist er plattformabhängig. Um dieses Verhalten zu überschreiben, legen Sie den Wert dieser Eigenschaft explizit fest. Um zum Standardverhalten zurückzukehren, setzen Sie diese Eigenschaft auf „undefined“. Werte von Null oder darunter sind nicht zulässig.

model : variant

Diese Eigenschaft enthält das Modell, das Daten für diesen Becher bereitstellt.

moving : bool [since QtQuick.Controls 2.2 (Qt 5.9)]

Diese Eigenschaft gibt an, ob sich der Tumbler derzeit bewegt, weil der Benutzer ihn entweder zieht oder wischt.

Diese Eigenschaft wurde in QtQuick.Controls 2.2 (Qt 5.9) eingeführt.

visibleItemCount : int

Diese Eigenschaft gibt die Anzahl der im Tumbler sichtbaren Elemente an. Es muss sich um eine ungerade Zahl handeln, da das aktuelle Element immer vertikal zentriert ist.

wrap : bool [since QtQuick.Controls 2.1 (Qt 5.8)]

Diese Eigenschaft legt fest, ob der Tumbler am oberen oder unteren Rand umbricht.

Der Standardwert ist „ false “, wenn „ count “ kleiner als „ visibleItemCount “ ist, da die Interaktion mit einem nicht umbrechenden Tumbler bei nur wenigen Elementen einfacher ist. Um dieses Verhalten zu überschreiben, legen Sie den Wert dieser Eigenschaft explizit fest. Um zum Standardverhalten zurückzukehren, setzen Sie diese Eigenschaft auf „ undefined “.

Diese Eigenschaft wurde in QtQuick.Controls 2.1 (Qt 5.8) eingeführt.

Dokumentation zu angehängten Eigenschaften

Tumbler.displacement : real [read-only attached]

Diese zugeordnete Eigenschaft nimmt einen Wert zwischen -visibleItemCount / 2 und visibleItemCount / 2 an, der angibt, wie weit dieses Element davon entfernt ist, das aktuelle Element zu sein, wobei 0 bedeutet, dass es vollständig aktuell ist.

Beispielsweise ist das untenstehende Element zu 40 % undurchsichtig, wenn es nicht das aktuelle Element ist, und wechselt zu einer Deckkraft von 100 %, sobald es zum aktuellen Element wird:

delegate: Text {
    text: modelData
    opacity: 0.4 + Math.max(0, 1 - Math.abs(Tumbler.displacement)) * 0.6
}

Tumbler.tumbler : Tumbler [read-only attached]

Diese angehängte Eigenschaft enthält den Tumbler. Die Eigenschaft kann an einen Tumbler-Delegaten angehängt werden. Der Wert lautet „ null “, wenn das Element kein Tumbler-Delegat ist.

Methodendokumentation

[since QtQuick.Controls 2.5 (Qt 5.12)] void positionViewAtIndex(int index, PositionMode mode)

Positioniert die Ansicht so, dass sich der „ index “ an der durch „ mode “ angegebenen Position befindet.

Beispiel:

positionViewAtIndex(10, Tumbler.Center)

Wenn „ wrap “ auf „true“ gesetzt ist (Standard), stehen die Modi zur Verfügung, die für die Funktion „ positionViewAtIndex()“ von „ PathView “ verfügbar sind; andernfalls stehen die Modi zur Verfügung, die für die Funktion „ positionViewAtIndex()“ von „ ListView “ verfügbar sind.

Hinweis: Es gibt eine bekannte Einschränkung: Wenn „ Tumbler.Beginning “ verwendet wird, während „ wrap “ auf „ true “ gesetzt ist, wird das falsche Element am oberen Rand der Ansicht positioniert. Als Workaround übergeben Sie „ index - 1 “.

Diese Methode wurde in QtQuick.Controls 2.5 (Qt 5.12) eingeführt.

Siehe auch currentIndex.

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