Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QLineEdit QregExp Affichage automatique des '-'



  • Bonjour,

    Je suis en train de faire une fenêtre contenant un champs de texte ou je dois entrer un Product Key sous cette forme : AAA99-AAaa9-aaaa9.

    Tout fonctionne très bien mais j'aimerais savoir s'il est possible d'insérer automatiquement les '-'. Pour le moment, je dois les entrer manuellement après chaque groupe.

    Fichier.hpp

            QGroupBox   *oneLineGroup  = new QGroupBox("QLineEdit - une ligne", this);
            QVBoxLayout *oneLineLayout = new QVBoxLayout;
            QLineEdit   *oneLineText   = new QLineEdit;
            QLabel      *lbl_hexa      = new QLabel("Entrer le code [A-F,a-f,0-9]\n(xxxxx-xxxxx-xxxxx)", this);
            QRegularExpressionValidator *hexa =
                    new QRegularExpressionValidator(QRegularExpression("[A-F0-9]{5}-[A-Fa-f0-9]{5}-[a-f0-9]{5}"));
    

    Fichier.cpp

        QFont hexaFontSize("manjari", 7);
        lbl_hexa->setFont(hexaFontSize);
        oneLineText->setFixedWidth(130);
        oneLineText->setValidator(hexa);
    
        oneLineLayout->addWidget(lbl_hexa);
        oneLineLayout->addWidget(oneLineText);
        oneLineGroup->setLayout(oneLineLayout);
        oneLineGroup->move(110, 360);
    

    Ca n'empeche pas le code de fonctionner mais c'est juste pour le confort.
    Je suppose que c'est un paramètre dans QRegEXP mais j'ai essayé plein de chose et rien ne fonctionne.... Je sèche :)

    Merci à vous


  • Lifetime Qt Champion

    Bonjour et bienvenue sur devnet,

    QLineEdit::setInputMask me semble indiquer pour ce cas de figure.

    Pour QRegExp, il faut arrêter de l'utiliser, il est déjà considéré comme obsolète dans Qt 5 et a été enlevé de Qt 6.



  • Merci,

    C'est bizarre dans mes recherches, j'ai lu qu'il fallait privilégier QRegExp parce plus puissant et moins limité... J'avoue ne pas avoir regarder les versions...

    J'ai essayé avec setInputMask, effectivement, cela fonctionne mais le cursor ne se met pas automatiquement a gauche, comme s'il considérait les champs vides comme rempli d'espaces, j'ai eu beau forcer le cursor avec Qt::AlignLeft et toutes autres méthodes prises dans la doc de Qt mais c'est toujours pareil.
    S'il y a un moyen de le forcer a être a gauche, je prends :)

    Sinon, merci beaucoup pour la réponse.


  • Lifetime Qt Champion

    Le masque d'entrée pourrait poser problème. Dans ce cas un validateur custom serait peut-être une alternative.



  • Très bien, je vais regarder ça alors.. merci beaucoup.


Log in to reply