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 :

QDir : liste de fichiers sans extension dans un QPlainTextEdit

  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut QDir : liste de fichiers sans extension dans un QPlainTextEdit
    Bonjour,

    Je voudrais lister des fichiers d'un sous repertoire de l'excutable (crée s'il n'existe pas) et afficher les noms des fichiers filtrée (*.txt), sans l'extension.

    J'ai trouvé comment creer des repertoires :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    #include "xavrecherche.h"
    #include  "qdir.h"
    #include  <iostream>
    #include  <string>
    using namespace std;
    XavRecherche::XavRecherche(QWidget *parent)
        : QMainWindow(parent)
    {
        string construire = "Exo";
            QDir lDir;
     
            if (QDir("Exo").exists())
            {
                lDir.mkdir("toto");
            }
            else
            {
                lDir.mkdir(construire.c_str());
            }
    }
    XavRecherche::~XavRecherche()
    {
    }
    et j'ai trouvé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    QString dir_path;
     QDir dir(dir_path);
     QStringList stringlist = dir->entryList(QDir::Files, QDir::NoSort);
     QString str = stringlist.join("\n");
    avec ce dernier code j'ai un message d'erreur -> has non-pointer type 'QDir'

    pouvez vous m'aider a y voir plus claire?

    cordialement

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    il faut mettre un point . pas une fleche ->

    La variable dir n'est pas un pointeur.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut
    Bonjour morinxav1,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    avec ce dernier code j'ai un message d'erreur -> has non-pointer type 'QDir'
    Cette erreur est due au fait que tu déclare ton dir comme un objet QDir et non un pointeur d'objet de QDir

    remplace '->' par '.' et cela devrait fonctionner



    [Edit] arf j'ai été devancé lol

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut merci
    Merci a tout les deux, avec le point cela marche effectivement beaucoup mieux... Arhhhh ces amateurs !!!!

    Avec le code ci-dessous j'affiche tout le chemin Comment afficher que les noms de fichiers sans l'extension ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    QString MyAppDirPath =  QCoreApplication::applicationDirPath();
    QStringList listFilter;
     listFilter << "*.film";
     QDirIterator dirIterator(MyAppDirPath, listFilter ,QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
     QStringList fileList;
     while(dirIterator.hasNext())
     {
         fileList << dirIterator.next();
     }
     QString essai = fileList.join("\n");
     QPlainTextEdit *Essai = new QPlainTextEdit(essai);
     grid->addWidget(Essai, 0, 2);

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut
    Je ne m'y connais pas trop en QStringList mais je pense que ce code devrait fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileList.replaceInStrings(".txt","");

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Merci
    Merci,

    effectivement cela supprime l'extension.

    et pour enlever le chemin ?

    Cordialement

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut
    Si tout tes fichiers ton dans le même répertoire il te suffit de faire la même chose que pour les extensions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileList.replaceInStrings(MyApplicationDirPath,"");

    Sinon il te faut plitter tes chemins et prendre le dernier string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     while(dirIterator.hasNext())
     {
         QList<QString> liste = dirIterator.next().split('\\');
         fileList << liste.end()
     }

  8. #8
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Merci
    Merci,

    Ce qui nous donne au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    QString MyAppDirPath =  QCoreApplication::applicationDirPath();
    QStringList listFilter;
     listFilter << "*.film";
     QDirIterator dirIterator(MyAppDirPath, listFilter ,QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
     QStringList fileList;
     while(dirIterator.hasNext())
     {
         fileList << dirIterator.next();
     }
     fileList.replaceInStrings(".film","");
     fileList.replaceInStrings(MyAppDirPath + "/","");
     QString essai = fileList.join("\n");
     QPlainTextEdit *Essai = new QPlainTextEdit(essai);
     grid->addWidget(Essai, 0, 2, 1, 5);
    Comment on met en Oeuvre "QString QDirIterator::fileName () const" qui a l'air de faire la même chose avec moins de code...?

    Cordialement

  9. #9
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut
    fileName ne fournirait pas moins de code je pense car fileName renvoi ton nomde fichier avec l'extension

    avec filename cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(dirIterator.hasNext())
     {
         dirIterator.next();
         fileList << dirIterator.fileName();
     }
     fileList.replaceInStrings(".film","");

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Merci
    Merci,

    Juste avant de cliquer sur resolu :

    Pour vous tous,il n'y a pas plus simple que mon code entier pour extraire les noms de fichiers du repertoire de l'executable sans extentions et sans chemin dans un QPlainTextEdit ?

    Comment fait on pour explorer un sous repertoire precis par exemple toto du repertoire de l'executable ?

    Cordialement

  11. #11
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut final...
    Merci a tous,

    cela nous donne :

    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
    QString MyAppDirPath =  QCoreApplication::applicationDirPath();
    QStringList listFilter;
     listFilter << "*.film";
     QDirIterator dirIterator((MyAppDirPath + "/Xavier"), listFilter ,QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
     QStringList fileList;
     while(dirIterator.hasNext())
     {
         fileList << dirIterator.next();
     }
     fileList.replaceInStrings(".film","");
     fileList.replaceInStrings(MyAppDirPath + "/","");
     fileList.replaceInStrings("Xavier/","");
     QString essai = fileList.join("\n");
     QPlainTextEdit *Essai = new QPlainTextEdit(essai);
     grid->addWidget(Essai, 0, 2, 1, 5);
    Cordialement

  12. #12
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Comme on te l'a dit plus haut, c'est dommage de faire tout un bazar pour enlever le chemin complet alors que t'as une fonction qui te donne directement ce que tu veux.

  13. #13
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Plus Propre
    bonsoir,

    au choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while(dirIterator.hasNext()) // Tant qu'on n'est pas arrivé à la fin de l'arborescence...
     
     {
         //fileList << dirIterator.next(); // ...on va au prochain fichier correspondant à notre filtre
         dirIterator.next(); // ...on va au prochain fichier correspondant à notre filtre
     
         fileList << dirIterator.fileName(); // on extrait que le nom du fichier + extention
     
     }
     fileList.replaceInStrings(".film",""); // on supprime l'extension .film
     //fileList.replaceInStrings(MyAppDirPath + "/",""); // on retir le chemin de l'appli
     //fileList.replaceInStrings("Xavier/",""); // on retire le chemin du repertoire
    Xavier
    cordialement

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2013, 00h26
  2. [Débutant] Afficher seulement le nom du fichier sans extension dans ma listbox
    Par Martipit dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/04/2012, 23h59
  3. Liste fichiers sans extensions
    Par fantas dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 30/06/2009, 17h52
  4. copier tous les fichiers sans extension dans un meme repertoire
    Par soussou80 dans le forum Administration système
    Réponses: 1
    Dernier message: 26/03/2009, 13h02
  5. Réponses: 11
    Dernier message: 28/10/2005, 09h21

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