Auf dieser Seite

QDoubleValidator Class

Die Klasse „QDoubleValidator“ ermöglicht die Bereichsprüfung von Gleitkommazahlen. Mehr...

Header: #include <QDoubleValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Erbt von: QValidator

Öffentliche Typen

enum Notation { StandardNotation, ScientificNotation }

Eigenschaften

Öffentliche Funktionen

QDoubleValidator(QObject *parent = nullptr)
QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
virtual ~QDoubleValidator()
double bottom() const
int decimals() const
QDoubleValidator::Notation notation() const
void setBottom(double)
void setDecimals(int)
void setNotation(QDoubleValidator::Notation)
void setRange(double minimum, double maximum, int decimals)
void setRange(double minimum, double maximum)
void setTop(double)
double top() const

Neu implementierte öffentliche Funktionen

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

Detaillierte Beschreibung

QDoubleValidator legt eine Obergrenze, eine Untergrenze und eine Begrenzung der Anzahl der Stellen hinter dem Komma fest.

Sie können den zulässigen Bereich in einem Aufruf mit ` setRange()` oder mit ` setBottom()` und ` setTop()` festlegen. Legen Sie die Anzahl der Dezimalstellen mit ` setDecimals()` fest. Die Funktion ` validate()` gibt den Validierungsstatus zurück.

QDoubleValidator verwendet seine „ locale “ (), um die Zahl zu interpretieren. In der deutschen Locale wird beispielsweise „1,234“ als Dezimalzahl 1,234 akzeptiert. In arabischen Locales akzeptiert QDoubleValidator arabische Ziffern.

Hinweis: Die in „ locale “ () festgelegten „ QLocale::NumberOptions “ beeinflussen ebenfalls die Art und Weise, wie die Zahl interpretiert wird. Da beispielsweise „ QLocale::RejectGroupSeparator “ standardmäßig nicht gesetzt ist (außer in der Locale „ "C" “), akzeptiert der Validator Gruppentrennzeichen. Wenn die Zeichenkette die Validierung besteht, übergeben Sie sie an „ locale “ ().toDouble(), um ihren numerischen Wert zu erhalten.

Siehe auch „ QIntValidator“ , „ QRegularExpressionValidator “, „ QLocale::toDouble()“ und das Beispiel zu Zeileneingaben.

Dokumentation zu Mitgliedstypen

enum QDoubleValidator::Notation

Diese Enumeration definiert die zulässigen Notationen für die Eingabe eines Double-Werts.

KonstanteWertBeschreibung
QDoubleValidator::StandardNotation0Die Zeichenfolge wird im Standardformat geschrieben, bestehend aus einem ganzzahligen Teil, optional gefolgt von einem Trennzeichen und einem Bruchteil, zum Beispiel "0.015".
QDoubleValidator::ScientificNotation1Die Zeichenfolge wird in wissenschaftlicher Notation geschrieben, bei der dem Standardformat optional ein Exponentialteil angehängt wird, zum Beispiel "1.5E-2".

Der ganzzahlige Teil kann wie üblich ein Vorzeichen enthalten. Dies sowie die Trennzeichen für den Bruchteil, den Exponenten und etwaige Zifferngruppierungen hängen von der Ländereinstellung ab. ` QDoubleValidator ` überprüft nicht die Position (die ebenfalls von der Ländereinstellung abhängt) der gefundenen Trennzeichen für Zifferngruppierungen, lehnt jedoch Eingaben ab, die diese enthalten, wenn in ` locale().numberOptions()` die Option ` QLocale::RejectGroupSeparator ` gesetzt ist.

Siehe auch QLocale::numberOptions(), QLocale::decimalPoint(), QLocale::exponential() und QLocale::negativeSign().

Dokumentation zu den Eigenschaften

bottom : double

Diese Eigenschaft enthält den minimal zulässigen Wert des Validators

Standardmäßig enthält diese Eigenschaft den Wert „-unendlich“.

Zugriffsfunktionen:

double bottom() const
void setBottom(double)

Siehe auch „ setRange()“.

decimals : int

Diese Eigenschaft gibt die maximale Anzahl von Stellen hinter dem Komma für den Validator an

Standardmäßig enthält diese Eigenschaft den Wert -1, was bedeutet, dass eine beliebige Anzahl von Stellen akzeptiert wird.

Zugriffsfunktionen:

int decimals() const
void setDecimals(int)

Siehe auch ` setRange()`.

notation : Notation

Diese Eigenschaft enthält die Angabe, wie eine Zeichenkette eine Zahl beschreiben kann

Standardmäßig ist diese Eigenschaft auf „ ScientificNotation “ gesetzt.

Zugriffsfunktionen:

QDoubleValidator::Notation notation() const
void setNotation(QDoubleValidator::Notation)

Siehe auch „ Notation “.

top : double

Diese Eigenschaft enthält den maximal zulässigen Wert des Validators

Standardmäßig enthält diese Eigenschaft den Wert „unendlich“.

Zugriffsfunktionen:

double top() const
void setTop(double)

Siehe auch „ setRange()“.

Dokumentation zu den Member-Funktionen

[explicit] QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)

Erstellt ein Validator-Objekt mit einem „ parent “-Objekt, das beliebige Double-Werte akzeptiert.

QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)

Erstellt ein Validator-Objekt mit einem „ parent “-Objekt. Dieser Validator akzeptiert Double-Werte im Bereich von bottom bis einschließlich top mit bis zu decimals Stellen nach dem Komma.

[virtual noexcept] QDoubleValidator::~QDoubleValidator()

Löscht den Validator.

[override virtual, since 6.3] void QDoubleValidator::fixup(QString &input) const

Implementiert: ` QValidator::fixup(QString &input) const`.

Versucht, die Zeichenkette „ input “ in eine „ Acceptable “-Darstellung eines „double“-Werts umzuwandeln.

Das Format der Zahl wird durch notation(), decimals(), locale() und dessen numberOptions() bestimmt.

Um notation() zu erfüllen, wird bei Verwendung von ScientificNotation der feste Wert in seiner normalisierten Form dargestellt, was bedeutet, dass jeder Wert ungleich Null eine Ziffer ungleich Null vor dem Dezimalpunkt aufweist.

QString input = "0.98765e2";
QDoubleValidator val;
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::ScientificNotation);
val.fixup(input); // input == "9.8765e+01"

Um den Anforderungen von ` decimals()` zu entsprechen, wird bei Verwendung von ` -1 ` die Anzahl der verwendeten Ziffern durch ` QLocale::FloatingPointShortest` bestimmt. Andernfalls wird der Bruchteil der Zahl (ggf. mit Rundung) abgeschnitten, wenn seine Länge ` decimals()` überschreitet. Wenn ` notation()` auf ` ScientificNotation ` gesetzt ist, erfolgt dies, nachdem die Zahl in ihre normalisierte Form gebracht wurde.

input = "-1234.6789";
val.setDecimals(2);
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::StandardNotation);
val.fixup(input); // input == "-1234.68"

Hinweis: Wenn „ decimals()“ auf einen Wert gesetzt ist, der größer als „ std::numeric_limits<double>::digits10 “ ist, und die Zeichenkette mehr als diese Anzahl an Ziffern enthält, können die darüber hinausgehenden Ziffern im Bruchteil geändert werden. Die resultierende Zeichenkette muss dieselbe Gleitkommazahl kodieren, wenn sie in ein „ double “ geparst wird.

Diese Funktion wurde in Qt 6.3 eingeführt.

void QDoubleValidator::setRange(double minimum, double maximum, int decimals)

Legt fest, dass der Validator Double-Werte im Bereich von minimum bis einschließlich maximum akzeptiert, mit maximal decimals Stellen nach dem Komma.

Hinweis: Wenn die Anzahl der Dezimalstellen auf -1gesetzt wird , bedeutet dies effektiv, dass sie unbegrenzt ist. Dies ist auch der Wert, der von einem standardmäßig erstellten Validator verwendet wird.

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

Stellt den Validator so ein, dass er Double-Werte im Bereich von minimum bis einschließlich maximum akzeptiert, ohne die Anzahl der Stellen hinter dem Komma zu ändern.

Dies ist eine überladene Funktion.

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

Implementiert: ` QValidator::validate(QString &input, int &pos) const`.

Gibt ` Acceptable ` zurück, wenn die Zeichenkette ` input ` das richtige Format aufweist und einen `double`-Wert innerhalb des gültigen Bereichs enthält.

Gibt ` Intermediate ` zurück, wenn ` input ` das falsche Format hat oder einen `double`-Wert außerhalb des zulässigen Bereichs enthält.

Gibt „ Invalid “ zurück, wenn „ input “ keinen Double-Wert darstellt oder zu viele Stellen nach dem Komma enthält.

Hinweis: Wenn der gültige Bereich nur aus positiven Double-Werten besteht (z. B. 0,0 bis 100,0) und „ input “ ein negativer Double-Wert ist, wird „ Invalid “ zurückgegeben. Wenn „ notation()“ auf „ StandardNotation “ gesetzt ist und die Eingabe mehr Ziffern vor dem Komma enthält, als ein Double-Wert im gültigen Bereich haben darf, wird „ Invalid “ zurückgegeben. Wenn „ notation()“ auf „ ScientificNotation “ gesetzt ist und die Eingabe nicht im gültigen Bereich liegt, wird „ Intermediate “ zurückgegeben. Der Wert kann durch Ändern des Exponenten dennoch gültig werden.

Standardmäßig wird der Parameter „ pos “ von diesem Validator nicht verwendet.

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