QValidator Class
La classe QValidator permet de valider le texte saisi. Plus d'informations...
| En-tête : | #include <QValidator> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Hérite : | QObject |
| Hérités 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, fournissent une vérification de base des plages numériques, et QRegularExpressionValidator fournit une vérification générale à l'aide d'une expression régulière personnalisée.
Si les validateurs intégrés ne sont pas suffisants, vous pouvez sous-classer QValidator. La classe possè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 ou non (pour la définition de valide de la sous-classe).
Ces trois états nécessitent quelques explications. Une chaîne Invalid est clairement invalide. Intermediate est moins évident : le concept de validité est difficile à appliquer lorsque la chaîne est incomplète (en cours d'édition). QValidator définit Intermediate comme la propriété d'une chaîne qui n'est ni clairement invalide, ni acceptable en tant que résultat final. Acceptable signifie que la chaîne est acceptable en tant que résultat final. On pourrait dire que toute chaîne qui est un état intermédiaire plausible lors de l'entrée d'une chaîne Acceptable est Intermediate.
Voici quelques exemples :
- Pour un éditeur de ligne qui accepte les nombres entiers de 10 à 1000 inclus, 42 et 123 sont Acceptable, la chaîne vide, 5 ou 1234 sont Intermediate, et "asdf" et 10114 sont Invalid.
- Pour une liste déroulante éditable qui accepte les URL, toute URL bien formée est Acceptable, "http://example.com/" est Intermediate (il peut s'agir d'un copier-coller qui a accidentellement inséré une virgule à la fin), la chaîne vide est Intermediate (l'utilisateur peut sélectionner et supprimer tout le texte en vue de saisir un nouvel URL) et "http:///./" est Invalid.
- Pour une boîte à outils qui accepte les longueurs, "11cm" et "1in" sont Acceptable, "11" et la chaîne vide sont Intermediate, et "http://example.com" et "hour" sont Invalid.
fixup() est fourni pour les validateurs qui peuvent réparer certaines erreurs de l'utilisateur. L'implémentation par défaut ne fait rien. QLineEdit Par exemple, la fonction fixup() est appelée si l'utilisateur appuie sur Entrée (ou Retour) et que le contenu n'est pas valide. Cela permet à la fonction fixup() d'opérer une certaine magie pour rendre une chaîne Invalid Acceptable .
Un validateur possède une locale, définie avec setLocale(). Il est généralement utilisé pour analyser des données localisées. Par exemple, QIntValidator et QDoubleValidator l'utilisent pour analyser les représentations localisées des entiers et des doubles.
QValidator est généralement utilisé avec QLineEdit, QSpinBox et QComboBox.
Voir également QIntValidator, QDoubleValidator, QRegularExpressionValidator, et Line Edits Example.
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 exister.
| Constante | Valeur | Description de la chaîne |
|---|---|---|
QValidator::Invalid | 0 | La chaîne est clairement invalide. |
QValidator::Intermediate | 1 | La chaîne 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()
Détruit le validateur, en libérant la mémoire et les autres ressources utilisées.
[signal] void QValidator::changed()
Ce signal est émis lorsqu'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 pour qu'il soit valide selon les règles de ce validateur. Il n'est pas nécessaire qu'elle aboutisse à une chaîne valide : les appelants de cette fonction doivent refaire un test par la suite ; la fonction par défaut ne fait rien.
Les réimplémentations de cette fonction peuvent modifier input même si elles ne produisent pas une chaîne valide. Par exemple, un validateur d'ISBN peut vouloir supprimer tous les caractères à l'exception des chiffres et de "-", même si le résultat n'est toujours pas un ISBN valide ; un validateur de nom de famille peut vouloir supprimer les espaces blancs 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 la locale du validateur. La locale est par défaut initialisée à la même valeur que QLocale().
Voir aussi setLocale() et QLocale::QLocale().
void QValidator::setLocale(const QLocale &locale)
Définit le locale qui sera utilisé par le validateur. À moins que setLocale n'ait été appelé, le validateur utilisera la locale par défaut définie avec QLocale::setDefault(). Si aucune locale par défaut n'a été définie, il s'agit de la locale du système d'exploitation.
Voir aussi 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'un peu plus d'édition rendra l'entrée acceptable (par exemple, l'utilisateur tape "4" dans un widget qui accepte des entiers entre 10 et 99), et Acceptable si l'entrée 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.