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.
| Constante | Valeur | Description |
|---|---|---|
QDoubleValidator::StandardNotation | 0 | La 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::ScientificNotation | 1 | La 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.