Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    QInputDialog::getText : longueur maximale du champ
    Bonjour,

    Je travail sur un proget Qt est mon problème est le suivant:

    J'essaie désespérément de trouver une solution pour limiter le nombre de caractère a saisir dans un "QInputDialog::getText"

    Avec un QLineEdit, on utilise la méthode maxLenght, mais la pour "Qt QInputDialog" je sèche!

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void TW_S_Rck::renameTextBank()
        {
            bool ok = false;
            int index = listeDeroulanteBank->currentIndex();
            QString buff = nameBank[index];
     
            nameBank[index] = QInputDialog::getText(this,"Rename Bank","",QLineEdit::Normal, QString("%1").arg(nameBank[index]), &ok);
     
            if(ok && !nameBank[index].isEmpty()){listeDeroulanteBank->setItemText(index,nameBank[index]);}
            else{nameBank[index] = buff;}
        }


    Merci d'avance pour votre aide.

    Cordialement, Antoine

  2. #2
    Modérateur

    Bonsoir,

    QString("%1").arg(nameBank[index]) ou plus directement : nameBank[index] si tu ne comptes rien concaténer autour.

    Tu as moyen d'aller chercher le QLineEdit utilisé en interne avec la fonction membre findChild() si tu construis manuellement la boîte de dialogue au lieu d'appeler la fonction membre statique getText() qui le fait pour toi :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        QInputDialog dialog(this);
        dialog.setInputMode(QInputDialog::TextInput);
        dialog.setWindowTitle("Rename Bank");
        dialog.setLabelText("");
        dialog.setTextValue(nameBank[index]);
     
        auto lineEdit = dialog.findChild<QLineEdit *>();
        lineEdit->setMaxLength(/* . . . */);
     
        if (dialog.exec() == QDialog::Accepted) {
            /* chaîne saisie = */ dialog.textValue();
        } else {
            // Saisie annulée
        }
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).
    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Mes extensions FireDVP (Firefox), ChroDVP (Chrome) : suivi des nouveaux messages, boutons/raccourcis et bien plus !

  3. #3
    Candidat au Club
    Bonsoir,

    Merci beaucoup pour cette réponse complète et rapide!
    Je cherchais effectivement à faire appel à QLineEdit en interne mais je ne savais pas comment! Je teste tout ça et vous dit ce qu'il en est!

    Cordialement, Antoine

  4. #4
    Candidat au Club
    Le compilateur plante sur ces lignes:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    auto lineEdit = dialog.findChild<QLineEdit *>();
    lineEdit->setMaxLength(16);


    erreur : 'lineEdit' does not name a type
    erreur : 'lineEdit' was not declared in this scope

    ??

  5. #5
    Modérateur

    Faut se mettre à jour auto est un mot-clé de la norme C++11 (2011).
    Soit tu compiles (au moins) en C++11, soit tu le remplaces auto par QLineEdit *.
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).
    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Mes extensions FireDVP (Firefox), ChroDVP (Chrome) : suivi des nouveaux messages, boutons/raccourcis et bien plus !

  6. #6
    Candidat au Club
    Merci ca marche nickel!
    Un grand merci pour vos explication et votre temps!

    Cordialement, Antoine

###raw>template_hook.ano_emploi###