Sur cette page

QDoubleValidator Class

La classe QDoubleValidator permet de vérifier l'étendue des nombres à virgule flottante. Plus d'informations...

En-tête : #include <QDoubleValidator>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Héritages : QValidator

Types publics

enum Notation { StandardNotation, ScientificNotation }

Propriétés

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Signaux

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

Description détaillée

QDoubleValidator fournit une limite supérieure, une limite inférieure et une limite sur le nombre de chiffres après la virgule.

Vous pouvez définir la plage acceptable en un seul appel avec setRange(), ou avec setBottom() et setTop(). Définissez le nombre de décimales avec setDecimals(). La fonction validate() renvoie l'état de la validation.

QDoubleValidator utilise sa fonction locale() pour interpréter le nombre. Par exemple, dans les paramètres régionaux allemands, "1,234" sera accepté comme le nombre fractionnaire 1,234. Dans les langues arabes, QDoubleValidator accepte les chiffres arabes.

Remarque : le paramètre QLocale::NumberOptions défini sur locale() affecte également la manière dont le nombre est interprété. Par exemple, comme QLocale::RejectGroupSeparator n'est pas défini par défaut (sauf dans la locale "C" ), le validateur acceptera les séparateurs de groupes. Si la chaîne passe la validation, elle est transmise à locale().toDouble() pour obtenir sa valeur numérique.

Voir aussi QIntValidator, QRegularExpressionValidator, QLocale::toDouble(), et Line Edits Example.

Documentation sur les types de membres

enum QDoubleValidator::Notation

Cette énumération définit les notations autorisées pour la saisie d'un double.

ConstanteValeurDescription
QDoubleValidator::StandardNotation0La chaîne est écrite dans le format standard, une partie de nombre entier éventuellement suivie d'un séparateur et d'une partie fractionnaire, par exemple "0.015".
QDoubleValidator::ScientificNotation1La chaîne est écrite sous la forme scientifique, qui ajoute éventuellement une partie exposante au format standard, par exemple "1.5E-2".

La partie entière du nombre peut, comme d'habitude, inclure un signe. Ceci, ainsi que les séparateurs pour la partie fractionnaire, l'exposant et tout groupe de chiffres, dépendent de la locale. QDoubleValidator ne vérifie pas l'emplacement (qui dépendrait également de la locale) de tout séparateur de groupe de chiffres qu'il trouve, mais il rejettera les entrées qui les contiennent si QLocale::RejectGroupSeparator est défini dans locale().numberOptions().

Voir aussi QLocale::numberOptions(), QLocale::decimalPoint(), QLocale::exponential(), et QLocale::negativeSign().

Documentation sur les propriétés

bottom : double

Cette propriété contient la valeur minimale acceptable du validateur

Par défaut, cette propriété contient une valeur de -infinity.

Fonctions d'accès :

double bottom() const
void setBottom(double)

Signal du notificateur :

void bottomChanged(double bottom)

Voir aussi setRange().

decimals : int

Cette propriété contient le nombre maximum de chiffres après la virgule du validateur

Par défaut, cette propriété contient une valeur de -1, ce qui signifie que n'importe quel nombre de chiffres est accepté.

Fonctions d'accès :

int decimals() const
void setDecimals(int)

Signal Notificateur :

void decimalsChanged(int decimals)

Voir aussi setRange().

notation : Notation

Cette propriété contient la notation de la façon dont une chaîne de caractères peut décrire un nombre

Par défaut, cette propriété est définie sur ScientificNotation.

Fonctions d'accès :

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

Notifier signal :

void notationChanged(QDoubleValidator::Notation notation)

Voir aussi Notation.

top : double

Cette propriété contient la valeur maximale acceptable du validateur

Par défaut, cette propriété contient une valeur infinie.

Fonctions d'accès :

double top() const
void setTop(double)

Signal du notificateur :

void topChanged(double top)

Voir aussi setRange().

Documentation des fonctions membres

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

Construit un objet validateur avec un objet parent qui accepte n'importe quel double.

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

Construit un objet validateur avec un objet parent. Ce validateur accepte les doubles de bottom à top inclus, avec un maximum de decimals chiffres après la virgule.

[virtual noexcept] QDoubleValidator::~QDoubleValidator()

Détruit le validateur.

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

Réimplémente : QValidator::fixup(QString &input) const.

Tente de fixer la chaîne input à une représentation Acceptable d'un double.

Le format du nombre est déterminé par notation(), decimals(), locale() et numberOptions().

Pour se conformer à notation(), lorsque ScientificNotation est utilisé, la valeur fixe sera représentée sous sa forme normalisée, ce qui signifie que toute valeur non nulle aura un chiffre non nul avant la virgule.

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

Pour se conformer à decimals(), lorsqu'il s'agit de -1, le nombre de chiffres utilisés sera déterminé par QLocale::FloatingPointShortest. Sinon, la partie fractionnaire du nombre est tronquée (avec arrondi, le cas échéant) si sa longueur dépasse decimals(). Lorsque notation() est ScientificNotation, cette opération est effectuée après que le nombre a été mis sous sa forme normalisée.

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

Note : Si decimals() est fixé à, et que la chaîne fournit, plus de std::numeric_limits<double>::digits10, les chiffres au-delà de ce nombre dans la partie fractionnaire peuvent être modifiés. La chaîne résultante doit encoder le même nombre à virgule flottante, lorsqu'elle est analysée en double.

Cette fonction a été introduite dans Qt 6.3.

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

Configure le validateur pour qu'il accepte les doubles de minimum à maximum inclus, avec un maximum de decimals chiffres après la virgule.

Remarque : en fixant le nombre de décimales à -1, le validateur est en fait illimité. C'est également la valeur utilisée par un validateur construit par défaut.

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

Configure le validateur pour qu'il accepte les doubles de minimum à maximum inclus sans modifier le nombre de chiffres après la virgule.

Il s'agit d'une fonction surchargée.

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

Réimplémente : QValidator::validate(QString &input, int &pos) const.

Renvoie Acceptable si la chaîne input est au bon format et contient un double dans la plage valide.

Renvoie Intermediate si input n'est pas au bon format ou contient un double en dehors de la plage.

Renvoie Invalid si la chaîne input ne représente pas un double ou contient trop de chiffres après la virgule.

Remarque : si la plage valide ne comprend que des doubles positifs (par exemple, de 0,0 à 100,0) et que input est un double négatif, Invalid est renvoyé. Si notation() est égal à StandardNotation et que l'entrée contient plus de chiffres avant la virgule qu'un double de la plage valide ne peut en avoir, Invalid est renvoyé. Si notation() est égal à ScientificNotation, et que l'entrée n'est pas dans la plage valide, Intermediate est renvoyé. La valeur peut encore devenir valide en changeant l'exposant.

Par défaut, le paramètre pos n'est pas utilisé par ce validateur.

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