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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QDoubleValidator::StandardNotation | 0 | Die Zeichenfolge wird im Standardformat geschrieben, bestehend aus einem ganzzahligen Teil, optional gefolgt von einem Trennzeichen und einem Bruchteil, zum Beispiel "0.015". |
QDoubleValidator::ScientificNotation | 1 | Die 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.