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

Discussion :

Alimenter les listes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Par défaut Alimenter les listes
    Bonjour,

    J'ai
    3 zones :
    - un bouton tools où je veux pouvoir ouvrir une liste de répertoire seulement

    - lorsque je sélectionne un répertoire , le chemin est mis dans une zone de texte.
    - lorsque la zone de texte est renseignée la listview doit afficher uniquement les fichiers qui se termine par l'extension XML sans afficher l'extension.

    En pièce jointe l'interface.

    C'est ma première appli QT mais je ne trouve pas comment réaliser cela, je suis preneur de toute aide pour m'accompagner.

    MerciPièce jointe 73367
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Citation Envoyé par altair8080 Voir le message
    - un bouton tools où je veux pouvoir ouvrir une liste de répertoire seulement
    Tu peux demander un répertoire à l'utilisateur avec QFileDialog::getExistingDirectory() dans le slot connecté au signal clicked() du bouton (dans Qt Creator, clic-droit sur le bouton -> aller au slot -> clicked).

    - lorsque je sélectionne un répertoire , le chemin est mis dans une zone de texte.
    Toujours dans le slot, tu appelles setText sur le QLineEdit (et pas QTextEdit qui sert plutôt quand il y a plusieurs lignes).

    - lorsque la zone de texte est renseignée la listview doit afficher uniquement les fichiers qui se termine par l'extension XML sans afficher l'extension.
    Le setText va déclencher le signal textChanged du QLineEdit, donc tu connectes un slot à ce signal dans lequel tu vas construire la liste dans un QStringList, avec au choix: QDirIterator, QDir::entryList ou QDir::entryInfoList et QFileInfo::baseName() pour ne garder que le nom sans l'extension.
    Pour les mettre dans le QListView, tu passes la liste par la méthode setStringList, d'un objet QStringListModel que tu auras créé et affecté à ta vue (avec QListView::setModel) dans le constructeur de ta fenêtre.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Par défaut
    Merci

    J'ai donc mis cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    void Widget::on_toolButton_clicked()
    {
    /*
        QString dossier = QFileDialog::getExistingDirectory(this);
        ui->rep->setText(dossier);
    */
     ui->rep->setText(QFileDialog::getExistingDirectory(this));
    }
     
     
    void Widget::on_rep_textChanged(QString )
    {
     
    }
    Maintenant j'aborde le dernier point, mais je n'ai pas encore trouvé.
    Si tu peux me donner une orientation sachant que la zone se nomme list.

    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Tu ajoutes un membre QStringListModel *model; dans ta classe, et tu ajoutes ça dans le constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    model = new QStringListModel(this);
    ui->list->setModel(model);
    Et tu mets quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void Widget::on_rep_textChanged(QString nomRepertoire)
    {
        QDir repertoire(nomRepertoire);
        QStringList liste;
        foreach(QFileInfo fichier, repertoire.entryInfoList(QStringList("*.xml"), QDir::Files | QDir::NoDotAndDotDot))
        {
            liste << fichier.baseName();
        } 
        model->setStringList(liste);
    }
    PS: QFileDialog::getExistingDirectory renvoie une chaîne nulle quand l'utilisateur annule ou ferme la fenêtre de dialogue sans valider.
    Il vaut mieux tester le QString renvoyé avant de changer le QLineEdit.

Discussions similaires

  1. [AC-2007] Alimenter une Liste par les valeurs d'une ligne
    Par curt dans le forum IHM
    Réponses: 11
    Dernier message: 19/04/2009, 12h00
  2. Réponses: 5
    Dernier message: 04/10/2008, 17h15
  3. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  4. [LG]Les listes
    Par franck H dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2004, 15h15

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