Sur cette page

QDoubleValidator Class

La classe QDoubleValidator permet de vérifier que les nombres à virgule flottante se situent dans une plage donnée. En savoir plus...

En-tête : #include <QDoubleValidator>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Hérite de : 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

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 acceptée 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 validation.

QDoubleValidator utilise son locale() pour interpréter le nombre. Par exemple, dans les paramètres régionaux allemands, « 1,234 » sera accepté comme le nombre décimal 1,234. Dans les paramètres régionaux arabes, QDoubleValidator acceptera les chiffres arabes.

Remarque : les paramètres QLocale::NumberOptions définis dans la méthode locale() influencent également la manière dont le nombre est interprété. Par exemple, comme l’option QLocale::RejectGroupSeparator n’est pas activée par défaut (sauf dans la locale "C" ), le validateur acceptera les séparateurs de groupes. Si la chaîne passe la validation, transmettez-la à locale().toDouble() pour obtenir sa valeur numérique.

Voir également QIntValidator, QRegularExpressionValidator, QLocale::toDouble() et l’exemple sur les champs de saisie en ligne.

Documentation sur les types de membres

enum QDoubleValidator::Notation

Cette énumération définit les notations autorisées pour la saisie d'un nombre à virgule flottante de type double.

ConstanteValeurDescription
QDoubleValidator::StandardNotation0La chaîne est écrite au format standard, avec une partie entière éventuellement suivie d’un séparateur et d’une partie décimale, par exemple "0.015".
QDoubleValidator::ScientificNotation1La chaîne est écrite sous forme scientifique, qui ajoute éventuellement une partie exposant au format standard, par exemple "1.5E-2".

La partie entière peut, comme d’habitude, comporter un signe. Ceci, ainsi que les séparateurs de la partie décimale, de l'exposant et de tout regroupement de chiffres, dépendent des paramètres régionaux. La fonction ` QDoubleValidator ` ne vérifie pas l’emplacement (qui dépendrait également des paramètres régionaux) des séparateurs de regroupement de chiffres qu’elle trouve, mais elle rejettera les entrées qui en contiennent si ` QLocale::RejectGroupSeparator ` est défini dans ` locale().numberOptions()`.

Voir également 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 la valeur -infini.

Fonctions d'accès :

double bottom() const
void setBottom(double)

Voir également setRange().

decimals : int

Cette propriété définit le nombre maximal de chiffres après la virgule autorisé par le validateur

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

Fonctions d'accès :

int decimals() const
void setDecimals(int)

Voir aussi setRange().

notation : Notation

Cette propriété définit la notation permettant à une chaîne de caractères de représenter 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)

Voir également Notation.

top : double

Cette propriété contient la valeur maximale acceptable pour le validateur

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

Fonctions d'accès :

double top() const
void setTop(double)

Voir également setRange().

Documentation sur les fonctions membres

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

Crée un objet validateur à partir d'un objet « parent » qui accepte n'importe quelle valeur de type double.

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

Crée un objet validateur à partir d'un objet « parent ». Ce validateur acceptera les valeurs de type double comprises entre bottom et top inclus, avec jusqu'à decimals chiffres après la virgule.

[virtual noexcept] QDoubleValidator::~QDoubleValidator()

Supprime le validateur.

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

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

Tente de convertir la chaîne « input » en une représentation « Acceptable » d'un nombre de type double.

Le format du nombre est déterminé par les fonctions notation(), decimals(), locale() et numberOptions() de cette dernière.

Pour se conformer à la norme notation(), lorsque la fonction ScientificNotation est utilisée, la valeur fixe sera représentée sous sa forme normalisée, ce qui signifie que toute valeur non nulle comportera 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()`, lorsque ` -1 ` est utilisé, 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 défini sur ` 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"

Remarque : si decimals() est défini sur une valeur supérieure à std::numeric_limits<double>::digits10 et que la chaîne fournit plus de , les chiffres au-delà de ce nombre dans la partie fractionnaire peuvent être modifiés. La chaîne résultante doit coder 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 nombres de type double compris entre minimum et maximum inclus, avec au maximum decimals chiffres après la virgule.

Remarque : définir le nombre de décimales sur -1 revient à le fixer à un nombre 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 nombres de type double compris entre minimum et 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 format correct et contient un nombre de type `double` compris dans l'intervalle valide.

Renvoie ` Intermediate ` si ` input ` n'est pas au bon format ou contient une valeur de type `double` hors de cette plage.

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

Remarque : si l'intervalle valide ne comprend que des nombres doubles positifs (par exemple, de 0,0 à 100,0) et que ` input ` est un nombre double négatif, alors ` Invalid ` est renvoyé. Si ` notation()` est défini sur ` StandardNotation` et que l'entrée contient plus de chiffres avant la virgule décimale qu'un nombre double de l'intervalle valide ne peut en avoir, ` Invalid ` est renvoyé. Si notation() est défini sur ScientificNotation et que la valeur saisie ne se trouve pas dans la plage valide, Intermediate est renvoyée. La valeur peut toutefois devenir valide en modifiant 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.