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