===== QValidator ===== La classe QValidator fournit la validation de champs de texte. [[#Description détaillée|Plus d'informations...]] ==== Héritage ==== Hérite de [[QObject]]. Hérité par [[QDoubleValidator]], [[QIntValidator]] et [[QRegExpValidator]]. ==== Description détaillée ==== La classe QValidator fournit la validation de champs de texte. La classe elle-même est abstraite. Deux sous-classes, [[QIntValidator]] et [[QDoubleValidator]], fournissent la vérification de gammes numériques. [[QRegExpValidator]] fournit la vérification générale en utilisant les expressions régulières. Si les validateurs fournis ne vous suffisent pas, vous pouvez dériver votre propre sous-classe de QValidator. La classe a deux fonctions virtuelles : [[#validate()]] et [[#fixup()]]. La fonction [[#validate()]] doit être implémentée par toutes les sous-classes et retourner une des valeurs de l'énumération ''State'' ([[#State-enum|Invalid]], [[#State-enum|Intermediate]] ou [[#State-enum|Acceptable]]) selon la validité de l'argument (pour la définition de la sous-classe de validité). Ces trois états nécessitent quelques explications. Une chaîne de caractères qui retourne [[#State-enum|Invalid]] est clairement invalide. L'état [[#State-enum|Intermediate]] est moins évident : la notion de validité est difficile à appliquer quand la chaîne de caractères est incomplète (toujours en cours d'édition). QValidator définit [[#State-enum|Intermediate]] comme la propriété d'une chaîne de caractères qui n'est pas manifestement invalide, mais pas non plus acceptable comme résultat final. L'état [[#State-enum|Acceptable]] signifique que la chaîne est acceptable comme résultat final. On pourrait dire que toute chaîne de caractères qui est un dans l'état intermédiaire lors de l'entrée d'une chaîne de caractères [[#State-enum|Acceptable]] est [[#State-enum|Intermediate]]. Quelques exemples : * Pour une ligne d'édition qui accepte les entiers de 10 à 1000 inclus, 42 et 123 sont [[#State-enum|Acceptable]], une chaîne de caractères vide et 5 sont [[#State-enum|Intermediate]], et "asdf" et 1114 sont [[#State-enum|Invalid]] ; * Pour une liste déroulante éditable qui accepte des URL, toutes les URL bien formées sont [[#State-enum|Acceptable]], "http://example.com/," est [[#State-enum|Intermediate]] (elle peut être copiée et collée en ayant pris accidentellement une virgule à la fin), une chaîne de caractères vide est [[#State-enum|Intermediate]] (l'utilisateur peut sélectionner et supprimer tout le texte en préparation pour entrer une nouvelle URL) et "http:///./" est invalide ; * Pour une //spin box// qui accepte des tailles, "11cm" et "1km" sont [[#State-enum|Acceptable]], "11" et une chaîne de caractères vide sont [[#State-enum|Intermediate]], et "http://example.com" et "heure" sont [[#State-enum|Invalid]]. La fonction [[#fixup()]] est fournie pour les validateurs qui peuvent repérer certaines des erreurs de l'utilisateur. L'implémentation par défaut est vide. Un [[QLineEdit]], par exemple, appellera [[#fixup()]] si l'utilisateur presse Entrée (ou Retour) et si le contenu est actuellement invalide. Cela permet à la fonction [[#fixup()]] de transformer une chaîne de caractères [[#State-enum|Invalid]] en une chaîne [[#State-enum|Acceptable]]. Un validateur a un concept de localisation, défini avec [[#setlocale()]]. Il est généralement utilisé pour analyser des données localisées. Par exemple, [[QIntValidator]] et [[QDoubleValidator]] l'utilise pour analyser les représentations localisées des nombres entiers et doubles. QValidator est souvent utilisé avec [[QLineEdit]], [[QSpinBox]] et [[QComboBox]]. Voir aussi [[QIntValidator]], [[QDoubleValidator]], [[QRegExpValidator]] et [[widgets-lineedits|l'exemple des lignes d'édition]]. ==== Type ==== === State-enum === ''enum QValidator::State'' Cette énumération définit les états qu'une chaîne de caractères validée peut avoir. ^ Constante ^ Valeur ^ Description ^ | ''QValidator::Invalid'' | 0 | La chaîne est //clairement// invalide. | | ''QValidator::Intermediate'' | 1 | La chaîne a une valeur intermédiaire plausible. | | ''QValidator::Acceptable'' | 2 | La chaîne est acceptable comme un résultat final, c'est-à-dire valide. | ==== Fonctions membres ==== === QValidator() === ''QValidator::QValidator ( [[QObject]] * parent = 0 )'' Construit le validateur. Le paramètre ''parent'' est passé au constructeur de [[QObject]]. === ~QValidator() === ''QValidator::~QValidator ()'' Détruit le validateur, libère tout l'espace et autres ressources utilisées. === fixup() === ''void QValidator::fixup ( [[QString]] & input ) const [virtual]'' Cette fonction tente de changer ''input'' pour être valide selon les règles du validateur. Elle ne doit pas aboutir à une chaîne de caractères valide : les appelants de cette fonction doivent la re-tester par la suite. La fonction ne fait rien par défaut. Les réimplémentations de cette fonction peuvent changer ''input'' même si elles ne produisent pas de chaînes de caractères valide. Par exemple, un validateur ISBN peut vouloir supprimer tous les caractères exceptés les nombres et "-", même si le résultat n'est pas un ISBN valide ; un validateur de surnoms peut vouloir supprimer les espaces au début et à la fin de la chaîne de caractères, même si la chaîne résultante n'est pas dans la liste des surnoms acceptés. === locale() === ''[[QLocale]] QValidator::locale () const'' Retourne la localisation utilisée pour le validateur. La localisation par défaut est initialisée à la même que [[qlocale#QLocale|QLocale()]]. Voir aussi [[#setLocale()]] et [[qlocale#QLocale|QLocale::QLocale()]]. === setLocale() === ''void QValidator::setLocale ( const [[QLocale]] & locale )'' Définit la localisation qui sera utilisée par le validateur. À moins que setLocale ait été appelée, le validateur va utiliser la localisation, par défaut mise à [[qlocale#setDefault|QLocale::setDefault()]]. Si la localisation par défaut n'a pas été définie, c'est la localisation du système d'exploitation qui sera utilisée. Voir aussi [[#locale()]] et [[qlocale#setDefault|QLocale::setDefault()]]. === validate() === ''[[#State-enum|State]] QValidator::validate ( [[QString]] & input, int & pos ) const [pure virtual]'' Cette fonction virtuelle retourne [[#State-enum|Invalid]] si ''input'' n'est pas valide selon les règles de ce validateur, [[#State-enum|Intermediate]] s'il est probable qu'avec un petit peu plus d'édition, l'entrée sera acceptable (par exemple, l'utilisateur tape « 4 » dans un widget qui accepte des entiers entre 10 et 99) et [[#State-enum|Acceptable]] si l'entrée est valide. Cette fonction peut changer les deux arguments ''input'' et ''pos'' (la position du curseur) si nécessaire. ==== Remerciements ==== Merci à Adrien Dadouchi pour la traduction et à , et à pour leur relecture !