Tumbler QML Type
Drehbares Rad mit auswählbaren Elementen. Mehr...
Import Statement: | import QtQuick.Controls |
Inherits: |
Eigenschaften
- count : int
- currentIndex : int
- currentItem : Item
- delegate : Component
- model : variant
- moving : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- visibleItemCount : int
- wrap : bool
(since QtQuick.Controls 2.1 (Qt 5.8))
Beigefügte Eigenschaften
- displacement : real
- tumbler : Tumbler
Methoden
- void positionViewAtIndex(int index, PositionMode mode)
(since QtQuick.Controls 2.5 (Qt 5.12))
Detaillierte Beschreibung
Tumbler { model: 5 // ... }
Tumbler ermöglicht es dem Benutzer, eine Option aus einem drehbaren "Rad" von Elementen auszuwählen. Es ist nützlich, wenn es zu viele Optionen gibt, um z. B. RadioButton zu verwenden, und zu wenige Optionen, um die Verwendung einer editierbaren SpinBox zu erfordern. Es ist insofern praktisch, als es keine Tastaturbedienung erfordert und bei einer großen Anzahl von Einträgen an jedem Ende umbricht.
Die API ähnelt der von Ansichten wie ListView und PathView; es können model und delegate gesetzt werden, und die Eigenschaften count und currentItem bieten einen Nur-Lese-Zugriff auf Informationen über die Ansicht. Um die Ansicht bei einem bestimmten Index zu positionieren, verwenden Sie positionViewAtIndex().
Im Gegensatz zu Ansichten wie PathView und ListView gibt es jedoch immer ein aktuelles Element (wenn das Modell nicht leer ist). Das heißt, wenn count gleich 0
ist, wird currentIndex zu -1
. In allen anderen Fällen wird es größer oder gleich 0
sein.
Standardmäßig gibt Tumbler wraps ein, wenn es den oberen und unteren Rand erreicht, solange es mehr Elemente im Modell gibt als sichtbare Elemente, d.h. wenn count größer als visibleItemCount ist:
import QtQuick import QtQuick.Window import QtQuick.Controls Rectangle { width: frame.implicitWidth + 10 height: frame.implicitHeight + 10 function formatText(count, modelData) { var data = count === 12 ? modelData + 1 : modelData; return data.toString().length < 2 ? "0" + data : data; } 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 } } 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 Input Controls.
Eigenschaft Dokumentation
count : int |
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 ist -1
, wenn count gleich 0
ist. In allen anderen Fällen ist er größer als oder gleich 0
.
Siehe auch currentItem und positionViewAtIndex().
currentItem : Item |
Diese Eigenschaft enthält das Element mit dem aktuellen Index.
Siehe auch currentIndex und positionViewAtIndex().
delegate : Component |
Diese Eigenschaft enthält den Delegaten, der zur Anzeige der einzelnen Elemente verwendet wird.
model : variant |
Diese Eigenschaft enthält das Modell, das Daten für diesen Becher bereitstellt.
moving : bool |
Diese Eigenschaft beschreibt, ob sich der Tumbler gerade bewegt, weil der Benutzer ihn entweder zieht oder anklickt.
Diese Eigenschaft wurde in QtQuick.Controls 2.2 (Qt 5.9) eingeführt.
visibleItemCount : int |
Diese Eigenschaft speichert die Anzahl der sichtbaren Elemente im Tumbler. Sie muss eine ungerade Zahl sein, da das aktuelle Element immer vertikal zentriert ist.
wrap : bool |
Diese Eigenschaft bestimmt, ob der Tumblr oben oder unten ankommt oder nicht.
Der Standardwert ist false
, wenn count kleiner als visibleItemCount ist, da es einfacher ist, mit einem nicht umlaufenden Tumbler zu interagieren, wenn es nur wenige Elemente gibt. Um dieses Verhalten außer Kraft zu setzen, setzen Sie explizit den Wert dieser Eigenschaft. 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 der angehängten Eigenschaft
Tumbler.displacement : real |
Diese Attached-Eigenschaft enthält einen Wert von -visibleItemCount / 2
bis visibleItemCount / 2
, der angibt, wie weit dieses Element vom aktuellen Element entfernt ist, wobei 0
das vollständig aktuelle Element ist.
Das folgende Element ist beispielsweise zu 40 % undurchsichtig, wenn es nicht das aktuelle Element ist, und wird zu 100 % undurchsichtig, wenn es das aktuelle Element wird:
delegate: Text { text: modelData opacity: 0.4 + Math.max(0, 1 - Math.abs(Tumbler.displacement)) * 0.6 }
Tumbler.tumbler : Tumbler |
Diese angehängte Eigenschaft enthält den Tumbler. Die Eigenschaft kann an einen Tumblr-Delegaten angehängt werden. Der Wert lautet null
, wenn das Element kein Tumblr-Delegat ist.
Dokumentation der Methode
|
Positioniert die Ansicht so, dass sich die index an der durch mode angegebenen Position befindet.
Zum Beispiel:
positionViewAtIndex(10, Tumbler.Center)
Wenn wrap wahr ist (die Vorgabe), sind die Modi verfügbar, die für die Funktion PathView's positionViewAtIndex() verfügbar sind, andernfalls sind die Modi verfügbar, die für die Funktion ListView's positionViewAtIndex() verfügbar sind.
Hinweis: Es gibt die bekannte Einschränkung, dass die Verwendung von Tumbler.Beginning
, wenn wrap gleich true
ist, dazu führt, dass das falsche Element am oberen Rand der Ansicht positioniert wird. Um dies zu umgehen, übergeben Sie index - 1
.
Diese Methode wurde in QtQuick.Controls 2.5 (Qt 5.12) eingeführt.
Siehe auch currentIndex.
© 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.