QDoubleValidator Class

Die Klasse QDoubleValidator ermöglicht die Bereichsprüfung von Fließkommazahlen. Mehr...

Kopfzeile: #include <QDoubleValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Vererbungen: 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

Reimplementierte öffentliche Funktionen

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

Signale

void bottomChanged(double bottom)
void decimalsChanged(int decimals)
void notationChanged(QDoubleValidator::Notation notation)
void topChanged(double top)

Detaillierte Beschreibung

QDoubleValidator bietet eine Obergrenze, eine Untergrenze und eine Grenze für die Anzahl der Stellen nach dem Dezimalpunkt.

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

QDoubleValidator verwendet seine locale(), um die Zahl zu interpretieren. Im deutschen Gebietsschema wird zum Beispiel "1,234" als Bruchzahl 1,234 akzeptiert. In arabischen Sprachumgebungen akzeptiert QDoubleValidator arabische Ziffern.

Hinweis: Die Einstellung QLocale::NumberOptions auf locale() wirkt sich auch auf die Art und Weise aus, wie die Zahl interpretiert wird. Da zum Beispiel QLocale::RejectGroupSeparator standardmäßig nicht gesetzt ist (außer im Gebietsschema "C" ), akzeptiert der Validator Gruppentrennzeichen. Wenn die Zeichenkette die Prüfung besteht, übergeben Sie sie an locale().toDouble(), um ihren numerischen Wert zu erhalten.

Siehe auch QIntValidator, QRegularExpressionValidator, QLocale::toDouble(), und Line Edits Example.

Dokumentation der Mitgliedstypen

enum QDoubleValidator::Notation

Diese Aufzählung definiert die zulässigen Notationen für die Eingabe eines Double.

KonstanteWertBeschreibung
QDoubleValidator::StandardNotation0Die Zeichenkette wird im Standardformat geschrieben, mit einem ganzzahligen Teil, optional gefolgt von einem Trennzeichen und einem gebrochenen Teil, z. B. "0.015".
QDoubleValidator::ScientificNotation1Die Zeichenkette wird in wissenschaftlicher Form geschrieben, die optional einen Exponententeil an das Standardformat anhängt, z. B. "1.5E-2".

Der Ganzzahlenteil kann, wie üblich, ein Vorzeichen enthalten. Dies sowie die Trennzeichen für den Bruchteil, den Exponenten und die Zifferngruppierung hängen vom Gebietsschema ab. QDoubleValidator prüft nicht die Platzierung (die ebenfalls vom Gebietsschema abhängt) der gefundenen Zifferngruppierungstrennzeichen, weist aber Eingaben zurück, die diese enthalten, wenn QLocale::RejectGroupSeparator in locale().numberOptions() gesetzt ist.

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

Dokumentation der Eigenschaft

bottom : double

Diese Eigenschaft enthält den minimalen akzeptablen Wert des Validators

Standardmäßig enthält diese Eigenschaft einen Wert von -unendlich.

Zugriffsfunktionen:

double bottom() const
void setBottom(double)

Benachrichtigungssignal:

void bottomChanged(double bottom)

Siehe auch setRange().

decimals : int

Diese Eigenschaft enthält die maximale Anzahl der Nachkommastellen des Validators

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

Zugriffsfunktionen:

int decimals() const
void setDecimals(int)

Benachrichtigungssignal:

void decimalsChanged(int decimals)

Siehe auch setRange().

notation : Notation

Diese Eigenschaft enthält die Notation, wie eine Zeichenfolge eine Zahl beschreiben kann

Standardmäßig ist diese Eigenschaft auf ScientificNotation eingestellt.

Zugriffsfunktionen:

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

Benachrichtigungssignal:

void notationChanged(QDoubleValidator::Notation notation)

Siehe auch Notation.

top : double

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

Standardmäßig enthält diese Eigenschaft einen Wert von unendlich.

Zugriffsfunktionen:

double top() const
void setTop(double)

Benachrichtigungssignal:

void topChanged(double top)

Siehe auch setRange().

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein Validator-Objekt mit einem parent -Objekt, das ein beliebiges Double akzeptiert.

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

Konstruiert ein Validator-Objekt mit einem parent Objekt. Dieser Validator akzeptiert Doubles von bottom bis einschließlich top, mit bis zu decimals Nachkommastellen.

[virtual noexcept] QDoubleValidator::~QDoubleValidator()

Zerstört den Validator.

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

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

Dies ist eine überladene Funktion.

Versucht, die Zeichenkette input auf eine Acceptable Darstellung eines Double zu fixieren.

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

Um notation() zu entsprechen, wird bei der Verwendung von ScientificNotation der feste Wert in seiner normalisierten Form dargestellt, was bedeutet, dass jeder Wert, der nicht Null ist, eine Stelle vor dem Dezimalpunkt hat, die nicht Null ist.

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

Um decimals() zu entsprechen, wird bei -1 die Anzahl der verwendeten Stellen durch QLocale::FloatingPointShortest bestimmt. Andernfalls wird der Nachkommateil der Zahl abgeschnitten (gegebenenfalls mit Rundung), wenn seine Länge decimals() überschreitet. Wenn notation() gleich ScientificNotation ist, geschieht 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 gesetzt ist und die Zeichenkette mehr als std::numeric_limits<double>::digits10 enthält, können die darüber hinausgehenden Ziffern im Nachkommabereich geändert werden. Der resultierende String muss dieselbe Fließkommazahl kodieren, wenn er in eine double geparst wird.

Diese Funktion wurde in Qt 6.3 eingeführt.

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

Stellt den Validator so ein, dass er Doubles von minimum bis einschließlich maximum akzeptiert, mit maximal decimals Nachkommastellen.

Hinweis: Wenn Sie die Anzahl der Nachkommastellen auf -1 setzen, ist sie praktisch unbegrenzt. Dies ist auch der Wert, der von einem standardmäßig erstellten Prüfer verwendet wird.

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

Dies ist eine überladene Funktion.

Stellt den Validator so ein, dass er Doubles von minimum bis einschließlich maximum akzeptiert, ohne die Anzahl der Ziffern nach dem Dezimalpunkt zu ändern.

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

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

Gibt Acceptable zurück, wenn die Zeichenkette input das richtige Format hat und einen Double innerhalb des gültigen Bereichs enthält.

Gibt Intermediate zurück, wenn input im falschen Format ist oder einen Double außerhalb des Bereichs enthält.

Gibt Invalid zurück, wenn input keinen Pasch darstellt oder zu viele Nachkommastellen hat.

Hinweis: Wenn der gültige Bereich nur aus positiven Paschalen besteht (z. B. 0,0 bis 100,0) und input eine negative Paschale ist, wird Invalid zurückgegeben. Wenn notation() auf StandardNotation gesetzt ist und die Eingabe mehr Stellen vor dem Dezimalpunkt enthält, als ein Double 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 noch gültig werden, indem der Exponent geändert wird.

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

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