QDoubleSpinBox Class

Die Klasse QDoubleSpinBox stellt ein Spin-Box-Widget bereit, das Doubles aufnehmen kann. Mehr...

Kopfzeile: #include <QDoubleSpinBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: QAbstractSpinBox

Eigenschaften

Öffentliche Funktionen

QDoubleSpinBox(QWidget *parent = nullptr)
virtual ~QDoubleSpinBox()
QString cleanText() const
int decimals() const
double maximum() const
double minimum() const
QString prefix() const
void setDecimals(int prec)
void setMaximum(double max)
void setMinimum(double min)
void setPrefix(const QString &prefix)
void setRange(double minimum, double maximum)
void setSingleStep(double val)
void setStepType(QAbstractSpinBox::StepType stepType)
void setSuffix(const QString &suffix)
double singleStep() const
QAbstractSpinBox::StepType stepType() const
QString suffix() const
virtual QString textFromValue(double value) const
double value() const
virtual double valueFromText(const QString &text) const

Reimplementierte öffentliche Funktionen

virtual void fixup(QString &input) const override
virtual QValidator::State validate(QString &text, int &pos) const override

Öffentliche Slots

void setValue(double val)

Signale

void textChanged(const QString &text)
void valueChanged(double d)

Detaillierte Beschreibung

QDoubleSpinBox ermöglicht es dem Benutzer, einen Wert auszuwählen, indem er auf die Aufwärts- und Abwärts-Schaltflächen klickt oder die Tasten Up oder Down auf der Tastatur drückt, um den aktuell angezeigten Wert zu erhöhen oder zu verringern. Der Benutzer kann den Wert auch manuell eintippen. Das Drehfeld unterstützt doppelte Werte, kann aber mit validate(), textFromValue() und valueFromText() erweitert werden, um verschiedene Zeichenketten zu verwenden.

Jedes Mal, wenn sich der Wert ändert, gibt QDoubleSpinBox die Signale valueChanged() und textChanged() aus, wobei ersteres ein Double und letzteres ein QString liefert. Das Signal textChanged() liefert den Wert mit prefix() und suffix(). Der aktuelle Wert kann mit value() abgefragt und mit setValue() gesetzt werden.

Hinweis: QDoubleSpinBox rundet Zahlen, damit sie mit der aktuellen Genauigkeit angezeigt werden können. In einer QDoubleSpinBox mit Dezimalstellen, die auf 2 gesetzt sind, wird der Aufruf von setValue(2.555) dazu führen, dass value() 2.56 zurückgibt.

Wenn Sie auf die Auf- und Abwärts-Schaltflächen klicken oder die Auf- und Abwärts-Pfeile der Tastatur benutzen, wird der aktuelle Wert in Schritten der Größe singleStep() erhöht oder verringert. Wenn Sie dieses Verhalten ändern möchten, können Sie die virtuelle Funktion stepBy() neu implementieren. Der Minimal- und Maximalwert sowie die Schrittweite können mit einem der Konstruktoren festgelegt und später mit setMinimum(), setMaximum() und setSingleStep() geändert werden. Die Spinbox hat eine Standardgenauigkeit von 2 Dezimalstellen, die jedoch mit setDecimals() geändert werden kann.

Die meisten Spinboxen sind richtungsabhängig, aber QDoubleSpinBox kann auch als kreisförmige Spinbox arbeiten, d.h. wenn der Bereich 0.0-99.9 ist und der aktuelle Wert 99.9 ist, wird ein Klick auf "nach oben" 0 ergeben, wenn wrapping() auf true gesetzt ist. Verwenden Sie setWrapping(), wenn Sie ein kreisförmiges Verhalten wünschen.

Dem angezeigten Wert können beliebige Zeichenfolgen vorangestellt und angehängt werden, die z. B. die Währung oder die Maßeinheit angeben. Siehe setPrefix() und setSuffix(). Der Text in der Spin-Box wird mit text() (einschließlich prefix() und suffix()) oder mit cleanText() (ohne prefix(), suffix() und ohne führende oder nachfolgende Leerzeichen) abgerufen.

Oft ist es wünschenswert, dem Benutzer zusätzlich zum Bereich der numerischen Werte eine spezielle (oft voreingestellte) Auswahlmöglichkeit zu geben. Siehe setSpecialValueText(), um zu erfahren, wie man dies mit QDoubleSpinBox erreicht.

Hinweis: Der angezeigte Wert der QDoubleSpinBox ist auf 18 Zeichen begrenzt, zusätzlich zu eventuellen Präfix- und Suffix-Inhalten. Diese Begrenzung dient dazu, die DoubleSpinBox auch bei extrem großen Werten benutzbar zu halten.

Siehe auch QSpinBox, QDateTimeEdit, QSlider, und Spin Boxes Example.

Dokumentation der Eigenschaft

[read-only] cleanText : const QString

Diese Eigenschaft enthält den Text des Drehkastens ohne Präfix, Suffix oder führende oder nachfolgende Leerzeichen.

Zugriffsfunktionen:

QString cleanText() const

Siehe auch text, QDoubleSpinBox::prefix, und QDoubleSpinBox::suffix.

decimals : int

Diese Eigenschaft gibt die Genauigkeit der Spinbox in Dezimalstellen an

Legt fest, wie viele Dezimalstellen die Spinbox für die Anzeige und Interpretation von Doppelwerten verwendet.

Achtung! Der Maximalwert für decimals ist DBL_MAX_10_EXP + DBL_DIG (d.h. 323) aufgrund der Einschränkungen des Doppeltyps.

Hinweis: Das Maximum, das Minimum und der Wert können sich durch die Änderung dieser Eigenschaft ändern.

Zugriffsfunktionen:

int decimals() const
void setDecimals(int prec)

maximum : double

Diese Eigenschaft enthält den Maximalwert der Spinbox

Beim Einstellen dieser Eigenschaft wird minimum gegebenenfalls angepasst, um sicherzustellen, dass der Bereich gültig bleibt.

Der Standardhöchstwert ist 99,99.

Hinweis: Der Maximalwert wird gerundet, damit er mit der Dezimaleigenschaft übereinstimmt.

Zugriffsfunktionen:

double maximum() const
void setMaximum(double max)

Siehe auch decimals und setRange().

minimum : double

Diese Eigenschaft enthält den Mindestwert der Spin-Box

Beim Einstellen dieser Eigenschaft wird maximum gegebenenfalls angepasst, um sicherzustellen, dass der Bereich gültig bleibt.

Der Standard-Mindestwert ist 0,0.

Hinweis: Der Mindestwert wird gerundet, damit er mit der Dezimaleigenschaft übereinstimmt.

Zugriffsfunktionen:

double minimum() const
void setMinimum(double min)

Siehe auch decimals, setRange(), und specialValueText.

prefix : QString

Diese Eigenschaft enthält das Präfix der Spinbox

Das Präfix wird dem Anfang des angezeigten Wertes vorangestellt. Typischerweise wird es verwendet, um eine Maßeinheit oder ein Währungssymbol anzuzeigen. Ein Beispiel:

spinbox->setPrefix("$");

Um die Anzeige des Präfixes zu deaktivieren, setzen Sie diese Eigenschaft auf eine leere Zeichenfolge. Die Standardeinstellung ist kein Präfix. Das Präfix wird nicht angezeigt, wenn value() == minimum() und specialValueText() eingestellt ist.

Wenn kein Präfix gesetzt ist, gibt prefix() eine leere Zeichenkette zurück.

Zugriffsfunktionen:

QString prefix() const
void setPrefix(const QString &prefix)

Siehe auch suffix(), setSuffix(), specialValueText(), und setSpecialValueText().

singleStep : double

Diese Eigenschaft enthält den Schrittwert

Wenn der Benutzer die Pfeile verwendet, um den Wert des Drehkastens zu ändern, wird der Wert um den Betrag von singleStep erhöht/verringert. Der Standardwert ist 1.0. Die Einstellung eines singleStep-Wertes von weniger als 0 bewirkt nichts.

Zugriffsfunktionen:

double singleStep() const
void setSingleStep(double val)

stepType : StepType

Diese Eigenschaft enthält den Stufentyp.

Die Schrittart kann Einzelschritt oder adaptiver Dezimalschritt sein.

Zugriffsfunktionen:

QAbstractSpinBox::StepType stepType() const
void setStepType(QAbstractSpinBox::StepType stepType)

suffix : QString

Diese Eigenschaft enthält das Suffix der Spinbox

Das Suffix wird an das Ende des angezeigten Wertes angehängt. Typischerweise wird es verwendet, um eine Maßeinheit oder ein Währungssymbol anzuzeigen. Ein Beispiel:

spinbox->setSuffix(" km");

Um die Anzeige des Suffixes zu deaktivieren, setzen Sie diese Eigenschaft auf eine leere Zeichenfolge. Die Standardeinstellung ist kein Suffix. Das Suffix wird für minimum() nicht angezeigt, wenn specialValueText() eingestellt ist.

Wenn kein Suffix gesetzt ist, gibt suffix() eine leere Zeichenkette zurück.

Zugriffsfunktionen:

QString suffix() const
void setSuffix(const QString &suffix)

Siehe auch prefix(), setPrefix(), specialValueText(), und setSpecialValueText().

value : double

Diese Eigenschaft enthält den Wert des Drehkastens

setValue() gibt valueChanged() aus, wenn sich der neue Wert vom alten unterscheidet. Die Eigenschaft value hat ein zweites Meldesignal, das das Präfix und Suffix der Spinbox enthält.

Hinweis: Der Wert wird gerundet, damit er mit der aktuellen Einstellung der Dezimalstellen angezeigt werden kann.

Zugriffsfunktionen:

double value() const
void setValue(double val)

Melder-Signal:

void valueChanged(double d)

Siehe auch decimals.

Dokumentation der Mitgliedsfunktionen

[explicit] QDoubleSpinBox::QDoubleSpinBox(QWidget *parent = nullptr)

Konstruiert einen Drehkasten mit 0,0 als Minimalwert und 99,99 als Maximalwert, einem Schrittwert von 1,0 und einer Genauigkeit von 2 Dezimalstellen. Der Wert wird zunächst auf 0,00 gesetzt. Die Spinbox hat die angegebene parent.

Siehe auch setMinimum(), setMaximum(), und setSingleStep().

[virtual noexcept] QDoubleSpinBox::~QDoubleSpinBox()

Zerstörer.

[override virtual] void QDoubleSpinBox::fixup(QString &input) const

Reimplements: QAbstractSpinBox::fixup(QString &input) const.

void QDoubleSpinBox::setRange(double minimum, double maximum)

Convenience-Funktion zum Festlegen der Werte minimum und maximum mit einem einzigen Funktionsaufruf.

Hinweis: Die Maximal- und Minimalwerte werden gerundet, um der Dezimaleigenschaft zu entsprechen.

setRange(minimum, maximum);

ist äquivalent zu:

setMinimum(minimum);
setMaximum(maximum);

Siehe auch minimum und maximum.

void QDoubleSpinBox::setStepType(QAbstractSpinBox::StepType stepType)

Stellt den Schritttyp für den Drehkasten auf stepType ein, d. h. Einzelschritt oder adaptiver Dezimalschritt.

Adaptiver Dezimalschritt bedeutet, dass die Schrittweite kontinuierlich um eine Zehnerpotenz unter dem aktuellen value angepasst wird. Wenn der Wert also 1100 beträgt, ist die Schrittweite auf 100 eingestellt, so dass eine einmalige Erhöhung den Wert auf 1200 erhöht. Bei einem Wert von 1200 erhöht sich die Schrittweite auf 1300. Bei negativen Werten führt ein Schritt nach unten von -1100 zu -1200.

Es funktioniert auch für beliebige Dezimalwerte, 0,041 wird durch einmaliges Steppen auf 0,042 erhöht.

Die Schrittrichtung wird berücksichtigt, um Kantenfälle zu behandeln, so dass ein Schritt von 100 nach unten den Wert auf 99 statt auf 90 bringt. Ein Schritt nach oben gefolgt von einem Schritt nach unten - oder umgekehrt - landet also immer auf dem Ausgangswert; 99 -> 100 -> 99.

Wird diese Eigenschaft gesetzt, ignoriert die Spin-Box den Wert von singleStep, obwohl er erhalten bleibt, so dass singleStep wirksam wird, wenn der adaptive Dezimalschritt später deaktiviert wird.

Hinweis: Setter-Funktion für die Eigenschaft stepType.

Siehe auch stepType().

[signal] void QDoubleSpinBox::textChanged(const QString &text)

Dieses Signal wird immer dann ausgegeben, wenn der Text der Spinbox geändert wird. Der neue Text wird in text mit prefix() und suffix() übergeben.

[virtual] QString QDoubleSpinBox::textFromValue(double value) const

Diese virtuelle Funktion wird von der Spin-Box immer dann verwendet, wenn sie die angegebene value anzeigen muss. Die Standardimplementierung gibt eine Zeichenkette zurück, die value enthält und mit QWidget::locale() gedruckt wird.toString(value, u'f', decimals()) und entfernt das Tausendertrennzeichen, sofern nicht setGroupSeparatorShown() gesetzt ist. Reimplementierungen können alles zurückgeben.

Hinweis: QDoubleSpinBox ruft diese Funktion nicht für specialValueText() auf und weder prefix() noch suffix() sollten im Rückgabewert enthalten sein.

Wenn Sie dies neu implementieren, müssen Sie möglicherweise auch valueFromText() neu implementieren.

Siehe auch valueFromText() und QLocale::groupSeparator().

[override virtual] QValidator::State QDoubleSpinBox::validate(QString &text, int &pos) const

Reimplements: QAbstractSpinBox::validate(QString &input, int &pos) const.

[signal] void QDoubleSpinBox::valueChanged(double d)

Dieses Signal wird immer dann ausgegeben, wenn der Wert der Spin-Box geändert wird. Der neue Wert wird in d übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft value.

[virtual] double QDoubleSpinBox::valueFromText(const QString &text) const

Diese virtuelle Funktion wird vom Drehkasten immer dann verwendet, wenn er die vom Benutzer eingegebene Adresse text als Wert interpretieren muss.

Unterklassen, die Spin-Box-Werte auf eine nicht-numerische Weise anzeigen müssen, müssen diese Funktion neu implementieren.

Hinweis: QDoubleSpinBox behandelt specialValueText() separat; diese Funktion befasst sich nur mit den anderen Werten.

Siehe auch textFromValue() und validate().

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