QValidator Class
La classe QValidator permet de valider le texte saisi. En savoir plus...
| En-tête : | #include <QValidator> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Hérite de : | QObject |
| Hérité par : | QDoubleValidator, QIntValidator et QRegularExpressionValidator |
Types publics
| enum | State { Invalid, Intermediate, Acceptable } |
Fonctions publiques
| QValidator(QObject *parent = nullptr) | |
| virtual | ~QValidator() |
| virtual void | fixup(QString &input) const |
| QLocale | locale() const |
| void | setLocale(const QLocale &locale) |
| virtual QValidator::State | validate(QString &input, int &pos) const = 0 |
Signaux
| void | changed() |
Description détaillée
La classe elle-même est abstraite. Deux sous-classes, QIntValidator et QDoubleValidator, assurent une validation de base des plages numériques, tandis que QRegularExpressionValidator permet une validation générale à l'aide d'une expression régulière personnalisée.
Si les validateurs intégrés ne suffisent pas, vous pouvez créer une sous-classe de QValidator. La classe dispose de deux fonctions virtuelles : validate() et fixup().
validate() doit être implémentée par chaque sous-classe. Elle renvoie Invalid, Intermediate ou Acceptable selon que son argument est valide (selon la définition de « valide » de la sous-classe).
Ces trois états nécessitent quelques explications. Une chaîne de caractères « Invalid » est clairement invalide. « Intermediate » est moins évident : le concept de validité est difficile à appliquer lorsque la chaîne est incomplète (encore en cours d’édition). QValidator définit « Intermediate » comme la propriété d’une chaîne de caractères qui n’est ni clairement invalide, ni acceptable en tant que résultat final. « Acceptable » signifie que la chaîne de caractères est acceptable en tant que résultat final. On pourrait dire que toute chaîne de caractères constituant un état intermédiaire plausible lors de la saisie d’une chaîne « Acceptable » est « Intermediate ».
Voici quelques exemples :
- Pour un champ de saisie acceptant des nombres entiers compris entre 10 et 1 000 inclus, 42 et 123 sont des « Acceptable », la chaîne vide, 5 ou 1234 sont des « Intermediate », et «asdf» ainsi que 10114 sont des « Invalid ».
- Pour une liste déroulante modifiable acceptant les URL, toute URL bien formée est Acceptable; « http://example.com/ » est Intermediate (il peut s’agir d’un copier-coller ayant accidentellement conservé une virgule à la fin) ; la chaîne vide est Intermediate (l’utilisateur peut sélectionner et supprimer tout le texte avant de saisir une nouvelle URL) et « http:///./ » est Invalid.
- Pour une zone de sélection acceptant les longueurs, « 11 cm » et « 1 pouce » correspondent à Acceptable, « 11 » et la chaîne vide à Intermediate, et « http://example.com » et « heure » à Invalid.
fixupLa fonction () est fournie pour les validateurs capables de corriger certaines erreurs de l’utilisateur. L’implémentation par défaut ne fait rien. QLineEdit, par exemple, appellera fixup() si l’utilisateur appuie sur Entrée (ou Retour) et que le contenu n’est pas valide à ce moment-là. Cela permet à la fonction fixup() d’effectuer une transformation pour rendre une chaîne Invalid valide Acceptable.
Un validateur dispose d’une locale, définie à l’aide de ` setLocale()`. Elle est généralement utilisée pour analyser des données localisées. Par exemple, ` QIntValidator ` et ` QDoubleValidator ` s’en servent pour analyser les représentations localisées des entiers et des nombres à virgule flottante.
QValidator est généralement utilisé avec QLineEdit, QSpinBox et QComboBox.
Voir également QIntValidator, QDoubleValidator, QRegularExpressionValidator et l'exemple sur les champs de saisie.
Documentation sur les types de membres
enum QValidator::State
Ce type d'énumération définit les états dans lesquels une chaîne validée peut se trouver.
| Constante | Valeur | Description |
|---|---|---|
QValidator::Invalid | 0 | La chaîne de caractères est manifestement invalide. |
QValidator::Intermediate | 1 | La chaîne de caractères est une valeur intermédiaire plausible. |
QValidator::Acceptable | 2 | La chaîne est acceptable en tant que résultat final ; c'est-à-dire qu'elle est valide. |
Documentation des fonctions membres
[explicit] QValidator::QValidator(QObject *parent = nullptr)
Configure le validateur. Le paramètre « parent » est transmis au constructeur « QObject ».
[virtual noexcept] QValidator::~QValidator()
Supprime le validateur, libérant ainsi l'espace de stockage et les autres ressources utilisées.
[signal] void QValidator::changed()
Ce signal est émis dès qu'une propriété susceptible d'affecter la validité d'une chaîne de caractères a été modifiée.
[virtual] void QValidator::fixup(QString &input) const
Cette fonction tente de modifier input afin qu’elle soit valide selon les règles de ce validateur. Elle ne garantit pas nécessairement l’obtention d’une chaîne valide : les appelants de cette fonction doivent effectuer un nouveau test par la suite ; par défaut, elle ne fait rien.
Les réimplémentations de cette fonction peuvent modifier input même si elles ne produisent pas de chaîne valide. Par exemple, un validateur d’ISBN peut souhaiter supprimer tous les caractères à l’exception des chiffres et du signe « - », même si le résultat n’est toujours pas un ISBN valide ; un validateur de nom de famille peut souhaiter supprimer les espaces au début et à la fin de la chaîne, même si la chaîne résultante ne figure pas dans la liste des noms de famille acceptés.
QLocale QValidator::locale() const
Renvoie les paramètres régionaux du validateur. Par défaut, ces paramètres sont initialisés de la même manière que ceux de la fonction QLocale().
Voir également setLocale() et QLocale::QLocale().
void QValidator::setLocale(const QLocale &locale)
Définit la locale ( locale ) qui sera utilisée par le validateur. À moins que la fonction `setLocale` n’ait été appelée, le validateur utilisera la locale par défaut définie avec ` QLocale::setDefault()`. Si aucune locale par défaut n’a été définie, c’est la locale du système d’exploitation qui sera utilisée.
Voir également locale() et QLocale::setDefault().
[pure virtual] QValidator::State QValidator::validate(QString &input, int &pos) const
Cette fonction virtuelle renvoie « Invalid » si « input » n'est pas valide selon les règles de ce validateur, « Intermediate » s'il est probable qu'une légère modification rende la saisie acceptable (par exemple, si l'utilisateur saisit « 4 » dans un widget qui accepte des nombres entiers compris entre 10 et 99), et « Acceptable » si la saisie est valide.
La fonction peut modifier à la fois input et pos (la position du curseur) si nécessaire.
© 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.