IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Qt Discussion :

QInputDialog::getText : longueur maximale du champ


Sujet :

Qt

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut 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
    Invité
    Invité(e)
    Par défaut
    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
        }

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    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
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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 *.

  6. #6
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Merci ca marche nickel!
    Un grand merci pour vos explication et votre temps!

    Cordialement, Antoine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/11/2007, 03h31
  2. Longueur d'un champs TEXT
    Par PoZZyX dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/09/2005, 15h39
  3. Réponses: 1
    Dernier message: 03/11/2004, 14h55
  4. Réponses: 3
    Dernier message: 04/08/2004, 15h09
  5. select en fonction de la longueur d'un champ
    Par blackeagle1 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/07/2004, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo