Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. French
  4. QLineEdit et son Validator : problème d'apparance du texte suite à setText().

QLineEdit et son Validator : problème d'apparance du texte suite à setText().

Scheduled Pinned Locked Moved Solved French
14 Posts 5 Posters 1.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Max
    wrote on 25 Oct 2024, 10:00 last edited by
    #5

    Bonjour Axel,

    J'ai bien connecté un slot à ui->lineEdit sur le signal textChanged() et il est bien appelé.
    Quant au test que tu propose le validator ne modifie pas la chaîne proposée.
    L'expression régulière utilisée (un peu bourin je l'avoue) n'accepte que les caractère alphanumériques accentués ou non, les espaces, les tirets, et une particularité concernant l'abréviation "ép." :
    "^(\w| |'|-|–|À|Á|Â|Ã|Ä|Å|Ç|È|É|Ê|Ë|Ì|Í|Î|Ï|Ò|Ó|Ô|Õ|Ö|Ù|Ú|Û|Ü|Ý|à|á|â|ã|ä|å|ç|è|é|ê|ë|ì|í|î|ï|ð|ò|ó|ô|õ|ö|ù|ú|û|ü|ý|ÿ|œ|Œ|æ|Æ|ép\.)+$"
    Les chaînes correctes apparaissent bien en noir dans le QLineEdit.

    Avec ton test, j'ai tenté des chaînes incorrectes qui n'ont pas été modifiées par validate() :
    "Acr{0branche" "Acr{0branche" QValidator::Invalid 12
    "Acr{branche" "Acr{branche" QValidator::Invalid 11
    "Acr1branche" "Acr1branche" QValidator::Acceptable 0
    En écrivant ces lignes je m'aperçois toutefois que le dernier test ne devrait pas passer... mais cela n'a pas de lien avec le problème.

    1 Reply Last reply
    0
    • F Offline
      F Offline
      Frederic
      wrote on 28 Oct 2024, 08:38 last edited by
      #6

      Bonjour Max,
      Nous allons nous pencher sur ce probleme et tenter de vous revenir avec une solution/patch rapidement. Je créerai en paralelle un bug report afin que vous puissez suivre nos avancements.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Max
        wrote on 28 Oct 2024, 11:18 last edited by
        #7

        Bonjour Frédéric,

        Je viens de constater ce week-end que le problème ne se pose pas avec un autre QLineEdit doté d'un validateur utilisant cette expression régulière (validation d'une date au format dd/MM/yyyy):
        "^(((0[1-9]|[12][0-9]|3[01])- /.|(0[1-9]|[12][0-9]|30)- /.|(0[1-9]|1\d|2[0-8])[- /.]02)[- /.]\d{4}|29[- /.]02- /.)$"
        Quand la chaîne tapée est bonne le texte passe du rouge au noir.
        Je creuse...

        1 Reply Last reply
        0
        • F Offline
          F Offline
          Frederic
          wrote on 28 Oct 2024, 11:23 last edited by
          #8

          Après un peu de recherche il semble que le texte inséré par setText() n'est pas validé. Voir la documentation pour QLineEdit https://doc.qt.io/qt-6/qlineedit.html#text-prop

          De mon coté, j'ai effectué le meme exercise sur windows 11. SetText() permet effectivement d'insérer du text "incorrect" et il est par la suite possible de continuer a en entrer sans soucis. Cependant, si l'on supprime ce qui est dans le lineEdit en question, il devient de nouveau necessaire de respecter le validator. Celui-ci demeure donc actif.

          https://bugreports.qt.io/browse/QTBUG-130618

          J 1 Reply Last reply 28 Oct 2024, 12:43
          0
          • F Frederic
            28 Oct 2024, 11:23

            Après un peu de recherche il semble que le texte inséré par setText() n'est pas validé. Voir la documentation pour QLineEdit https://doc.qt.io/qt-6/qlineedit.html#text-prop

            De mon coté, j'ai effectué le meme exercise sur windows 11. SetText() permet effectivement d'insérer du text "incorrect" et il est par la suite possible de continuer a en entrer sans soucis. Cependant, si l'on supprime ce qui est dans le lineEdit en question, il devient de nouveau necessaire de respecter le validator. Celui-ci demeure donc actif.

            https://bugreports.qt.io/browse/QTBUG-130618

            J Offline
            J Offline
            JonB
            wrote on 28 Oct 2024, 12:43 last edited by JonB
            #9

            @Frederic said in QLineEdit et son Validator : problème d'apparance du texte suite à setText().:

            SetText() permet effectivement d'insérer du text "incorrect" et il est par la suite possible de continuer a en entrer sans soucis. Cependant, si l'on supprime ce qui est dans le lineEdit en question, il devient de nouveau necessaire de respecter le validator.

            lineEdit->setValidator(...);
            ....
            auto v = lineEdit->validator();
            lineEdit->setValidator(nullptr);
            lineEdit->setText("INVALID");
            lineEdit->setValidator(v);
            

            Maintenant on ne peut plus "continuer a en entrer sans soucis". Mais l'utilisateur doit taper Ctrl+A et Delete/Backspace pour continuer.

            QLineEdit+QValidator fonctionne par empêcher l'utilisateur de saisir une entrée invalide en premier lieu. Donc continuer apres avoir fait setText("INVALID") est problématique/pas convivial.

            https://bugreports.qt.io/browse/QTBUG-130618

            • Je crois qu'il faut ecrire un exemple de code?
            • "When entering a "correct" text after an "incorrect" one, the QLineEdit remains red." Je ne trouve pas que QLineEdit montre "incorrect" texte en aucun couleur/rouge? (à moins que vous faites quelque chose comme https://snorfalorpagus.net/blog/2014/08/09/validating-user-input-in-pyqt4-using-qvalidator/ ?).
            1 Reply Last reply
            0
            • F Offline
              F Offline
              Frederic
              wrote on 28 Oct 2024, 14:08 last edited by
              #10

              Idéalement, il faudrait deposer un reproducteur simple dans le rapport de bug (incluant le repaint en rouge lors de l'entrée de texte incorrect).

              En théorie, setText() devrait toujours entrer un texte qui serait validé par le validator. L'objectif était plutot de décrire le comportement de lineEdit.

              S 1 Reply Last reply 28 Oct 2024, 20:19
              0
              • F Frederic
                28 Oct 2024, 14:08

                Idéalement, il faudrait deposer un reproducteur simple dans le rapport de bug (incluant le repaint en rouge lors de l'entrée de texte incorrect).

                En théorie, setText() devrait toujours entrer un texte qui serait validé par le validator. L'objectif était plutot de décrire le comportement de lineEdit.

                S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 28 Oct 2024, 20:19 last edited by
                #11

                @Frederic En pratique, non. La propriété text est très claire sur ce sujet: The text is not validated when inserted with setText()..

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  Max
                  wrote on 29 Oct 2024, 17:47 last edited by
                  #12

                  Il est des moments où il faut être honnête...

                  @SGaist a raison, QLineEdit::setText() ne met pas le texte en rouge quand il n'est pas conforme au validator.
                  L'erreur venait de moi et c'est arrangé.
                  Sincèrement désolé !

                  S 1 Reply Last reply 30 Oct 2024, 11:42
                  0
                  • M Max
                    29 Oct 2024, 17:47

                    Il est des moments où il faut être honnête...

                    @SGaist a raison, QLineEdit::setText() ne met pas le texte en rouge quand il n'est pas conforme au validator.
                    L'erreur venait de moi et c'est arrangé.
                    Sincèrement désolé !

                    S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 30 Oct 2024, 11:42 last edited by
                    #13

                    @Max pas de soucis ! C'est comme ça qu'on apprend :-)

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      Max
                      wrote on 5 Jan 2025, 14:38 last edited by
                      #14

                      Pour être un peu plus complet sur ce sujet, je viens de lire que la QLineEdit peut être déclarée mandatory dans ses propriétés. Auquel cas le fond de ce Widget est jaune s'il n'est pas renseigné.

                      1 Reply Last reply
                      0
                      • M Max has marked this topic as solved on 5 Jan 2025, 14:38

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved