QIntValidator Class
La classe QIntValidator fournit un validateur qui garantit qu'une chaîne de caractères contient un nombre entier valide compris dans une plage spécifiée. En savoir plus...
| En-tête : | #include <QIntValidator> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Hérite de : | QValidator |
Propriétés
Fonctions publiques
| QIntValidator(QObject *parent = nullptr) | |
| QIntValidator(int minimum, int maximum, QObject *parent = nullptr) | |
| virtual | ~QIntValidator() |
| int | bottom() const |
| void | setBottom(int) |
| void | setRange(int bottom, int top) |
| void | setTop(int) |
| int | top() const |
Fonctions publiques réimplémentées
| virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &input, int &pos) const override |
Description détaillée
Exemple d'utilisation :
QValidator *validator = new QIntValidator(100, 999, this);
QLineEdit *edit = new QLineEdit(this);
// the edit lineedit will only accept integers between 100 and 999
edit->setValidator(validator);Nous présentons ci-dessous quelques exemples de validateurs. En pratique, ils seraient normalement associés à un widget, comme dans l'exemple ci-dessus.
QString str;
int pos = 0;
QIntValidator v(100, 900, this);
str = "1";
v.validate(str, pos); // returns Intermediate
str = "012";
v.validate(str, pos); // returns Intermediate
str = "123";
v.validate(str, pos); // returns Acceptable
str = "678";
v.validate(str, pos); // returns Acceptable
str = "999";
v.validate(str, pos); // returns Intermediate
str = "1234";
v.validate(str, pos); // returns Invalid
str = "-123";
v.validate(str, pos); // returns Invalid
str = "abc";
v.validate(str, pos); // returns Invalid
str = "12cm";
v.validate(str, pos); // returns InvalidNotez que la fonction ` 999 ` renvoie la valeur « Intermediate ». Les valeurs composées d’un nombre de chiffres égal ou inférieur à la valeur maximale sont considérées comme intermédiaires. Cela est voulu, car le chiffre qui empêche un nombre d’être dans la plage n’est pas nécessairement le dernier chiffre saisi. Cela signifie également qu’un nombre intermédiaire peut comporter des zéros en tête.
Les valeurs minimale et maximale sont définies en un seul appel avec ` setRange()`, ou individuellement avec ` setBottom()` et ` setTop()`.
QIntValidator utilise sa valeur ` locale()` pour interpréter le nombre. Par exemple, dans les paramètres régionaux arabes, QIntValidator acceptera les chiffres arabes.
Remarque : les paramètres QLocale::NumberOptions définis dans locale() influencent également la manière dont le nombre est interprété. Par exemple, comme QLocale::RejectGroupSeparator n’est pas défini par défaut, le validateur acceptera les séparateurs de groupes. Il est donc recommandé d’utiliser QLocale::toInt() pour obtenir la valeur numérique.
Voir également QDoubleValidator, QRegularExpressionValidator, QLocale::toInt() et l'exemple sur les champs de saisie en ligne.
Documentation sur les propriétés
bottom : int
Cette propriété contient la valeur minimale acceptable du validateur
Par défaut, la valeur de cette propriété est dérivée de l'entier signé le plus petit disponible (-2147483648).
Fonctions d'accès :
| int | bottom() const |
| void | setBottom(int) |
Voir également setRange().
top : int
Cette propriété contient la valeur maximale acceptable pour le validateur
Par défaut, la valeur de cette propriété est dérivée du plus grand entier signé disponible (2147483647).
Fonctions d'accès :
| int | top() const |
| void | setTop(int) |
Voir également setRange().
Documentation sur les fonctions membres
[explicit] QIntValidator::QIntValidator(QObject *parent = nullptr)
Crée un validateur à partir d'un objet ` parent ` qui accepte tous les nombres entiers.
QIntValidator::QIntValidator(int minimum, int maximum, QObject *parent = nullptr)
Crée un validateur avec une parent, qui accepte les nombres entiers compris entre minimum et maximum inclus.
[virtual noexcept] QIntValidator::~QIntValidator()
Supprime le validateur.
[override virtual] void QIntValidator::fixup(QString &input) const
Réimplémente : QValidator::fixup(QString &input) const.
void QIntValidator::setRange(int bottom, int top)
Définit la plage du validateur de manière à ce qu'il n'accepte que les nombres entiers compris entre bottom et top, inclus.
[override virtual] QValidator::State QIntValidator::validate(QString &input, int &pos) const
Réimplémente : QValidator::validate(QString &input, int &pos) const.
Renvoie « Acceptable » si l’ input e est un entier compris dans la plage valide. Si « input » comporte au plus autant de chiffres que la limite supérieure de la plage, ou s’il s’agit d’un préfixe d’un entier compris dans la plage valide, renvoie « Intermediate ». Sinon, renvoie « Invalid ».
Si l'intervalle valide ne comprend que des entiers positifs (par exemple, de 32 à 100) et que input est un entier négatif, la fonction renvoie Invalid. (En revanche, si l’intervalle est constitué d’entiers négatifs (par exemple, de -100 à -32) et que input est un entier positif sans signe plus en tête, alors la valeur « Intermediate » est renvoyée, car l’utilisateur pourrait être sur le point de saisir le signe moins (en particulier pour les langues s’écrivant de droite à gauche).
De même, si l’intervalle valide se situe entre 46 et 53, alors 41 et 59 seront considérés comme « Intermediate », car sinon l’utilisateur ne pourrait pas faire passer une valeur de 49 à 51.
int pos = 0;
s = "abc";
v.validate(s, pos); // returns Invalid
s = "5";
v.validate(s, pos); // returns Intermediate
s = "50";
v.validate(s, pos); // returns AcceptablePar 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.