SpinBox QML Type
Ermöglicht dem Benutzer die Auswahl aus einer Reihe von voreingestellten Werten. Mehr...
Import Statement: | import QtQuick.Controls |
Inherits: |
Eigenschaften
- displayText : string
(since QtQuick.Controls 2.4 (Qt 5.11))
- down
- down.hovered : bool
- down.implicitIndicatorHeight : real
- down.implicitIndicatorWidth : real
- down.indicator : Item
- down.pressed : bool
- editable : bool
- from : int
- inputMethodComposing : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- inputMethodHints : flags
(since QtQuick.Controls 2.2 (Qt 5.9))
- live : bool
(since 6.6)
- stepSize : int
- textFromValue : function
- to : int
- up
- up.hovered : bool
- up.implicitIndicatorHeight : real
- up.implicitIndicatorWidth : real
- up.indicator : Item
- up.pressed : bool
- validator : Validator
- value : int
- valueFromText : function
- wrap : bool
(since QtQuick.Controls 2.3 (Qt 5.10))
Signale
- valueModified()
(since QtQuick.Controls 2.2 (Qt 5.9))
Methoden
Detaillierte Beschreibung
Die SpinBox ermöglicht es dem Benutzer, einen ganzzahligen Wert auszuwählen, indem er auf die Auf- oder Abwärtstasten klickt oder auf der Tastatur nach oben oder unten drückt. Optional kann die SpinBox auch auf editable eingestellt werden, so dass der Benutzer einen Textwert in das Eingabefeld eingeben kann.
Standardmäßig liefert die SpinBox diskrete Werte im Bereich von [0-99]
mit einem stepSize von 1
.
SpinBox { value: 50 }
Benutzerdefinierte Werte
Auch wenn SpinBox mit ganzzahligen Werten arbeitet, kann es so angepasst werden, dass es beliebige Eingabewerte akzeptiert. Das folgende Snippet zeigt, wie validator, textFromValue und valueFromText verwendet werden können, um das Standardverhalten anzupassen.
SpinBox { id: spinBox from: 0 to: items.length - 1 value: 1 // "Medium" property var items: ["Small", "Medium", "Large"] validator: RegularExpressionValidator { regularExpression: new RegExp("(Small|Medium|Large)", "i") } textFromValue: function(value) { return items[value]; } valueFromText: function(text) { for (var i = 0; i < items.length; ++i) { if (items[i].toLowerCase().indexOf(text.toLowerCase()) === 0) return i } return spinBox.value } }
Auf die gleiche Weise kann SpinBox so angepasst werden, dass sie Fließkommazahlen akzeptiert:
SpinBox { id: spinBox from: 0 value: decimalToInt(1.1) to: decimalToInt(100) stepSize: decimalFactor editable: true anchors.centerIn: parent property int decimals: 2 property real realValue: value / decimalFactor readonly property int decimalFactor: Math.pow(10, decimals) function decimalToInt(decimal) { return decimal * decimalFactor } validator: DoubleValidator { bottom: Math.min(spinBox.from, spinBox.to) top: Math.max(spinBox.from, spinBox.to) decimals: spinBox.decimals notation: DoubleValidator.StandardNotation } textFromValue: function(value, locale) { return Number(value / decimalFactor).toLocaleString(locale, 'f', spinBox.decimals) } valueFromText: function(text, locale) { return Math.round(Number.fromLocaleString(locale, text) * decimalFactor) } }
Ein Präfix und ein Suffix können mit regulären Ausdrücken hinzugefügt werden:
SpinBox { id: spinBox from: 0 value: 11 to: 100 editable: true anchors.centerIn: parent property string prefix: "L=" property string suffix: "m" validator: RegularExpressionValidator { regularExpression: /\D*(-?\d*\.?\d*)\D*/ } textFromValue: function(value, locale) { return prefix + Number(value).toLocaleString(locale, 'f', 0) + suffix } valueFromText: function(text, locale) { let re = /\D*(-?\d*\.?\d*)\D*/ return Number.fromLocaleString(locale, re.exec(text)[1]) } }
Siehe auch Tumbler, Anpassen von SpinBox und Fokusverwaltung in Qt Quick Controls.
Eigenschaft Dokumentation
displayText : string |
Diese Eigenschaft enthält den textuellen Wert der SpinBox.
Der Wert der Eigenschaft basiert auf textFromValue und locale, und ist gleich:
var text = spinBox.textFromValue(spinBox.value, spinBox.locale)
Diese Eigenschaft wurde in QtQuick.Controls 2.4 (Qt 5.11) eingeführt.
Siehe auch textFromValue.
Diese Eigenschaften enthalten das Element des Abwärtsindikators und geben an, ob es gedrückt ist oder mit dem Mauszeiger bewegt wird. Die Eigenschaft down.hovered
wurde in QtQuick.Controls 2.1 eingeführt, und die Eigenschaften down.implicitIndicatorWidth
und down.implicitIndicatorHeight
wurden in QtQuick.Controls 2.5 eingeführt.
Siehe auch decrease().
editable : bool |
Diese Eigenschaft gibt an, ob die Spinbox editierbar ist. Der Standardwert ist false
.
Siehe auch validator.
from : int |
inputMethodComposing : bool |
Diese Eigenschaft gibt an, ob ein editierbares Drehfeld eine partielle Texteingabe durch eine Eingabemethode hat.
Während des Zusammensetzens kann eine Eingabemethode auf Maus- oder Tastenereignisse des Drehkastens angewiesen sein, um den Teiltext zu bearbeiten oder zu bestätigen. Diese Eigenschaft kann verwendet werden, um zu bestimmen, wann Event-Handler, die den korrekten Betrieb einer Eingabemethode stören könnten, deaktiviert werden sollen.
Diese Eigenschaft wurde in QtQuick.Controls 2.2 (Qt 5.9) eingeführt.
inputMethodHints : flags |
Diese Eigenschaft gibt der Eingabemethode Hinweise über den erwarteten Inhalt der Spinbox und wie sie funktionieren soll.
Der Standardwert ist Qt.ImhDigitsOnly
.
Der Wert ist eine bitweise Kombination von Flags oder Qt.ImhNone
, wenn keine Hinweise gesetzt sind.
Flags, die das Verhalten verändern, sind:
- Qt.ImhHiddenText - Zeichen sollten versteckt werden, wie es typischerweise bei der Eingabe von Passwörtern verwendet wird.
- Qt.ImhSensitiveData - Eingegebener Text sollte von der aktiven Eingabemethode nicht in einem persistenten Speicher wie dem prädiktiven Benutzerwörterbuch gespeichert werden.
- Qt.ImhNoAutoUppercase - Die Eingabemethode sollte nicht versuchen, am Ende eines Satzes automatisch auf Großbuchstaben umzuschalten.
- Qt.ImhPreferNumbers - Zahlen werden bevorzugt (sind aber nicht erforderlich).
- Qt.ImhPreferUppercase - Großbuchstaben werden bevorzugt (sind aber nicht erforderlich).
- Qt.ImhPreferLowercase - Kleinbuchstaben werden bevorzugt (sind aber nicht erforderlich).
- Qt.ImhNoPredictiveText - Keine Textvorhersage (d.h. Wörterbuchsuche) während des Tippens verwenden.
- Qt.ImhDate - Der Texteditor funktioniert wie ein Datumsfeld.
- Qt.ImhTime - Der Texteditor funktioniert wie ein Zeitfeld.
Flags, die die Eingabe einschränken (exklusive Flags) sind:
- Qt.ImhDigitsOnly - Nur Ziffern sind erlaubt.
- Qt.ImhFormattedNumbersOnly - Nur die Eingabe von Zahlen ist erlaubt. Dies schließt Dezimalpunkt und Minuszeichen ein.
- Qt.ImhUppercaseOnly - Nur die Eingabe von Großbuchstaben ist erlaubt.
- Qt.ImhLowercaseOnly - Nur die Eingabe von Kleinbuchstaben ist erlaubt.
- Qt.ImhDialableCharactersOnly - Nur Zeichen, die für die Telefonwahl geeignet sind, sind erlaubt.
- Qt.ImhEmailCharactersOnly - Nur Zeichen, die für E-Mail-Adressen geeignet sind, sind erlaubt.
- Qt.ImhUrlCharactersOnly - Nur Zeichen, die für URLs geeignet sind, sind erlaubt.
Masken:
- Qt.ImhExclusiveInputMask - Diese Maske ergibt einen Wert ungleich Null, wenn eines der Exklusiv-Flags verwendet wird.
Diese Eigenschaft wurde in QtQuick.Controls 2.2 (Qt 5.9) eingeführt.
live : bool |
Diese Eigenschaft legt fest, ob value aktualisiert wird, wenn der Benutzer displayText editiert. Der Standardwert ist false
. Wenn diese Eigenschaft true
ist und der vom Benutzer eingegebene Wert gültig ist und innerhalb der Grenzen der Spinbox [from, to] liegt, wird der Wert von SpinBox gesetzt. Wenn diese Eigenschaft false
ist oder der vom Benutzer eingegebene Wert außerhalb der Grenzen liegt, wird der Wert nicht aktualisiert, bis die Enter- oder Return-Taste gedrückt wird oder das Eingabefeld den Fokus verliert.
Diese Eigenschaft wurde in Qt 6.6 eingeführt.
Siehe auch editable und displayText.
stepSize : int |
textFromValue : function |
Diese Eigenschaft enthält eine Callback-Funktion, die immer dann aufgerufen wird, wenn ein Integer-Wert in Anzeigetext umgewandelt werden muss.
Die Standardfunktion kann überschrieben werden, um benutzerdefinierten Text für einen bestimmten Wert anzuzeigen. Dies gilt sowohl für bearbeitbare als auch für nicht bearbeitbare Spinboxen; wenn beispielsweise die Auf- und Ab-Tasten oder ein Mausrad zum Erhöhen und Verringern des Wertes verwendet werden, wird der neue Wert mithilfe dieser Funktion in Anzeigetext umgewandelt.
Die Signatur der Callback-Funktion lautet string function(value, locale)
. Die Funktion kann ein oder zwei Argumente haben, wobei das erste Argument der zu konvertierende Wert und das optionale zweite Argument das Gebietsschema ist, das für die Konvertierung verwendet werden soll, falls zutreffend.
Die Standardimplementierung führt die Konvertierung mit Number.toLocaleString() durch:
textFromValue: function(value, locale) { return Number(value).toLocaleString(locale, 'f', 0); }
Hinweis: Bei der Anwendung einer benutzerdefinierten textFromValue
-Implementierung für editierbare Spinboxen muss eine passende valueFromText -Implementierung bereitgestellt werden, um den benutzerdefinierten Text zurück in einen Integer-Wert konvertieren zu können.
Siehe auch valueFromText, validator, und locale.
to : int |
Diese Eigenschaften enthalten das Element des Aufwärtsindikators und geben an, ob es gedrückt oder mit dem Mauszeiger bewegt wird. Die Eigenschaft up.hovered
wurde in QtQuick.Controls 2.1 eingeführt, und die Eigenschaften up.implicitIndicatorWidth
und up.implicitIndicatorHeight
wurden in QtQuick.Controls 2.5 eingeführt.
Siehe auch increase().
validator : Validator |
Diese Eigenschaft enthält den Eingabetext-Validator für editierbare Spinboxen. Standardmäßig verwendet SpinBox IntValidator , um die Eingabe ganzer Zahlen zu akzeptieren.
SpinBox { id: control validator: IntValidator { locale: control.locale.name bottom: Math.min(control.from, control.to) top: Math.max(control.from, control.to) } }
Siehe auch editable, textFromValue, valueFromText, locale, und Validierung von Eingabetext.
value : int |
Diese Eigenschaft enthält den Wert im Bereich from
- to
. Der Standardwert ist 0
.
valueFromText : function |
Diese Eigenschaft enthält eine Callback-Funktion, die immer dann aufgerufen wird, wenn der Eingabetext in einen Integer-Wert umgewandelt werden muss.
Diese Funktion muss nur überschrieben werden, wenn textFromValue für eine editierbare Spinbox überschrieben wird.
Die Signatur der Callback-Funktion lautet int function(text, locale)
. Die Funktion kann ein oder zwei Argumente haben, wobei das erste Argument der zu konvertierende Text und das optionale zweite Argument das Gebietsschema ist, das für die Konvertierung verwendet werden soll, falls zutreffend.
Die Standardimplementierung führt die Konvertierung mit Number.fromLocaleString() durch:
valueFromText: function(text, locale) { return Number.fromLocaleString(locale, text); }
Hinweis: Wenn eine benutzerdefinierte textFromValue Implementierung für editierbare Spinboxen verwendet wird, muss eine passende valueFromText
Implementierung bereitgestellt werden, um den benutzerdefinierten Text zurück in einen Integer-Wert konvertieren zu können.
Siehe auch textFromValue, validator, und locale.
wrap : bool |
Signal-Dokumentation
|
Dieses Signal wird ausgegeben, wenn der Wert des Drehfelds vom Benutzer interaktiv geändert wurde, entweder durch Berührung, Maus, Rad oder Tasten. Im Falle der Interaktion über die Tastatur wird das Signal nur ausgegeben, wenn der Text akzeptiert wurde, d. h. wenn die Eingabe- oder Eingabetaste gedrückt wird oder das Eingabefeld den Fokus verliert.
Hinweis: Der entsprechende Handler ist onValueModified
.
Dieses Signal wurde in QtQuick.Controls 2.2 (Qt 5.9) eingeführt.
Methode Dokumentation
void decrease() |
void increase() |
© 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.