Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1575 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  lister contenu dossier linux avec Qt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lister contenu dossier linux avec Qt

n°1891990
rihaod
Posté le 06-06-2009 à 17:19:24  profilanswer
 

Bonjour,
 
je suis actuellement sous Linux avec Qt 4.5 et j'aimerai que depuis mon programme je puisse obtenir une liste d'un dossier.
Que ensuite cette liste soit sous forme d'un tableau de chaine de caractère, pour que, par la suite, je puisse comparer chaque chaines de caractère de ce tableau à une autre chaine et qu'il ne me conserve dans un autre tableau seulement les chaines qui correspondent partiellement à la chaine avec laquelle j'ai fait la comparaison.
 
Avez-vous des idées de fonctions utilisables sous linux? Savez-vous si Qt propose des fonctions de ce types?
 
Merci à vous!


Message édité par rihaod le 06-06-2009 à 17:19:45
mood
Publicité
Posté le 06-06-2009 à 17:19:24  profilanswer
 

n°1891993
Joel F
Real men use unique_ptr
Posté le 06-06-2009 à 17:25:58  profilanswer
 
n°1891994
rihaod
Posté le 06-06-2009 à 17:28:04  profilanswer
 

j'ai oublié de préciser que je suis C++, merci pour votre réponse.

n°1892021
Joel F
Real men use unique_ptr
Posté le 06-06-2009 à 19:11:02  profilanswer
 

et donc ? genre je t'ai passer des liens en JAVA :E

n°1892176
rihaod
Posté le 07-06-2009 à 15:48:45  profilanswer
 

C'est de l' XML non? avez-vous une fonction simple me permettant de lister un répertoire sous Linux?

n°1892187
Joel F
Real men use unique_ptr
Posté le 07-06-2009 à 16:20:29  profilanswer
 
n°1892191
ngkreator
Posté le 07-06-2009 à 16:34:25  profilanswer
 

QDir et sa fonction entryList: http://pepper.troll.no/s60prerelea [...] #entryList

Code :
  1. QDir dir("chemin du répertoire" );
  2. QStringList list(dir.entryList());


 
Ou même encore mieux:

Code :
  1. QStringList list(QDir("chemin du répertoire" ).entryList());


 
Ca claque Qt quand même :o
 
Pourquoi ya un espace après ma chaîne "chemin du répertoire"?


Message édité par ngkreator le 07-06-2009 à 16:40:39
n°1892199
rihaod
Posté le 07-06-2009 à 17:39:27  profilanswer
 

à quoi correspond entryList() svp?

n°1892206
ngkreator
Posté le 07-06-2009 à 18:12:07  profilanswer
 

Comment ça?

n°1893664
rihaod
Posté le 10-06-2009 à 15:32:08  profilanswer
 

merci pour vos réponse si rapide, je m'excuse pour les miennes si lentes!  
Donc, QDir correspond tout simplement au chemin et la fonction entryList correspond au paramètres "d'affichage", c'est bien ça?
list peut alors être réutilisé pour être affiché par exemple dans un List widget?  
 
merci à vous.

mood
Publicité
Posté le 10-06-2009 à 15:32:08  profilanswer
 

n°1893691
ngkreator
Posté le 10-06-2009 à 16:04:15  profilanswer
 

"entryList" est une méthode membre de la classe QDir, elle renvoie la liste des noms de fichiers contenus dans le répertoire qui est donnée en chemin. Oui QDir correspond au chemin, mais il contient plein d'autres informations sur le répertoire qui est donné en chemin.
La variable "list" contient un objet QStringList (QList<QString> ). C'est une liste d'objets QString. Chaque objet QString contient le nom d'un fichier.

 

Libre à toi d'utiliser cette liste comme tu le veux.

 

Après oui il se trouve que tu peux l'utiliser pour créer une nouvelle ligne dans un QListWidget avec la fonction addItems à qui tu donnes un objet QStringList. Chaque colonne de la nouvelle ligne prendra une chaine qui est contenu dans la liste.


Message édité par ngkreator le 10-06-2009 à 16:08:15
n°1893799
rihaod
Posté le 10-06-2009 à 18:38:52  profilanswer
 

Il faudrait enfaite que dans la variable "list" apparaissent la liste des fichiers après filtrage en fonction d'une autre chaine. Qu'il ne me garde que les noms des fichiers commençant par une chaine que j'aurai spécifié avant, un genre de strcmp(). Comment puis-je spécifier ce type de filtre?
et comment puis-je manipuler ensuite les différentes chaînes contenues dans le QStringList?
 
ps: je suis nouveau sur Qt et pendant mes tests j'avais besoin d'une fonction de base pour l'affichage en console comme printf(), mais l'include <stdio.h> ne marche pas, Quelle est la fonction d'affichage de texte simple sous Qt?
 
merci à vous.

n°1893834
ngkreator
Posté le 10-06-2009 à 20:37:20  profilanswer
 

Avant tout je te conseilles de lire la doc de QDir, pas toute la page bien sûr. Mais quand tu te demandes:

rihaod a écrit :

Il faudrait enfaite que dans la variable "list" apparaissent la liste des fichiers après filtrage en fonction d'une autre chaine. Qu'il ne me garde que les noms des fichiers commençant par une chaine que j'aurai spécifié avant, un genre de strcmp(). Comment puis-je spécifier ce type de filtre?


Il te suffi de regarder la doc de QDir pour voir s'il existe une fonction qui permet de filtrer, en cherchant le mot "filter" par exemple, pourquoi pas? Et là on tombe sur plusieurs fonctions dont celle là: http://doc.qtsoftware.com/4.5/qdir.html#setNameFilters

 

Tu as un objet QDir. Une fois que tu auras appliqué les bons filtres à cet objet grâce à sa fonction setNameFilters, son autre fonction entryList te renverra uniquement les noms de fichiers qui correspondent à ce filtre.

 

Donc d'après l'exemple de la doc si "prefix" est un objet QString qui contient la chaine que tu auras spécifié:

Code :
  1. QDir dir("Chemin_vers_dossier" );
  2. QStringList filters(prefix+"*" );
  3. dir.setNameFilters(filters);
  4. QStringList list(dir.entryList());


Alors tu devrais normalement récupérer tous les fichiers et dossiers qui commencent par le contenu de "prefix". J'ai peut être fait des conneries je suis distrait  :whistle:

 
rihaod a écrit :

et comment puis-je manipuler ensuite les différentes chaînes contenues dans le QStringList?


QStringList est un typedef de QList<QString>. Donc il faut que tu regardes dans la doc de Qt les méthodes qui te permettent d'accéder aux différents éléments (ici des objets QString) que contient un objet de classe QList. Pour infos il existe plusieurs méthodes pour accéder aux éléments: itérateurs type Java, itérateurs types std, indices. Le plus pratique reste les itérateurs type Java, enfin c'est un avis perso.
Doc de QList: http://doc.qtsoftware.com/4.5/qlist.html
Accéder aux éléments avec un indice: http://doc.qtsoftware.com/4.5/qlist.html#at ou http://doc.qtsoftware.com/4.5/qlis [...] or-5b-5d-2
Le plus simple pour un débutant c'est l'exemple donné par la doc:

Code :
  1. for (int i = 0; i < list.size(); ++i) {
  2.     if (list.at(i) == "Jane" )
  3.         cout << "Found Jane at position " << i << endl;
  4. }
 
rihaod a écrit :

ps: je suis nouveau sur Qt et pendant mes tests j'avais besoin d'une fonction de base pour l'affichage en console comme printf(), mais l'include <stdio.h> ne marche pas, Quelle est la fonction d'affichage de texte simple sous Qt?

 

merci à vous.

Printf fonctionne uniquement en mode console. Là tu es en mode "interface graphique" tu ne pourras pas afficher d'infos avec printf, enfin moi je ne sais pas comment faire en tous cas. Pour ça tu as QDebug, que je n'ai jamais utilisé. Je ne pourrai pas t'aider plus, mais la doc est là pour ça ;)

 

La doc est indispensable! http://doc.qtsoftware.com/4.5/index.html

 

La faq Qt de developpez.com peu t'aider aussi: http://qt.developpez.com/faq/ Il ont un bon forum pour Qt, ici pas grand monde utilise cette bibliothèque, tu auras plus d'aide là bas.


Message édité par ngkreator le 10-06-2009 à 20:46:42
n°1893903
ngkreator
Posté le 10-06-2009 à 23:48:31  profilanswer
 

Au fait si tu veux récupérer seulement les noms des fichiers présents dans le répertoire (donc pas les dossiers, et pas les fichiers "." et ".." ), il faut rajouter les constantes QDir::Files et QDir::NoDotAndDotDot dans la fonction entryList:
 

Code :
  1. QDir dir("Chemin_vers_dossier" );
  2. QStringList filters(prefix+"*" );
  3. dir.setNameFilters(filters);
  4. QStringList list(dir.entryList(QDir::Files|QDir::NoDotAndDotDot));


On utilise un ou soit une barre "|" entre les 2 constantes.
 
Tout ça est expliqué dans la doc de entryList.

n°1894144
rihaod
Posté le 11-06-2009 à 14:08:27  profilanswer
 

merci, ça fonctionne!

n°1894213
rihaod
Posté le 11-06-2009 à 16:06:13  profilanswer
 

Maintenant que je peut lister, mon problème est la réutilisation des QListWidgetItem que j'aimerais concaténer avec une autre chaine. Donc à l'aide de la fonction qstrcpy(), mais le problème est le type de l'item...
 
Comment puis-je convertir le type?
 
merci à vous.


Message édité par rihaod le 11-06-2009 à 16:06:29
n°1894243
rihaod
Posté le 11-06-2009 à 18:14:03  profilanswer
 

C'est bon, j'ai réglé le problème!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  lister contenu dossier linux avec Qt

 

Sujets relatifs
[résolu] Lire le contenu de mails d'une BAL avec PHPUpload d'un dossier en entier par HTTP
Upload d'un dossier en entier par HTTPxsl-fo, pages alternatives et contenu
Detecter changement contenu celluleProgramme c sous linux
[C] Probléme de récupération des données à travers ttyS (LINUX)Adapter la hauteur de la iframe a son contenu
[Qt & Phonon] Utiliser un backend alternatif à DX9Connaître le contenu d'un fichier compressé
Plus de sujets relatifs à : lister contenu dossier linux avec Qt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR