Bonsoir,
Comment recuperer le chemin d'un type de fichier de façon aleatoire dans un repertoire a chaque ouverture de son application?
Cordialement
Bonsoir,
Comment recuperer le chemin d'un type de fichier de façon aleatoire dans un repertoire a chaque ouverture de son application?
Cordialement
Bonsoir,
Si tu ne connais pas à l'avance le nombre de fichiers dans le répertoire, la seule solution est d'en faire la liste (avec QDir::entryList, entryInfoList ou QDirIterator) et d'en prendre un aléatoirement dans cette liste.
Merci,
j'en ai fait la liste et j'en ai même extrait le nombre, mais comment justement tu en prend un aleatoirement ?
Cordialement
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 QString MyAppDirPath = QCoreApplication::applicationDirPath(); // recupere le chemein de l'application QStringList listFilter; // on filtre les fichier avec l'extension .film listFilter << "*.film"; QDirIterator dirIterator((MyAppDirPath + "/Xavier"), listFilter ,QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories); // On déclare un QDirIterator dans lequel on indique que l'on souhaite parcourir un répertoire et ses sous-répertoires. // De plus, on spécifie le filtre qui nous permettra de récupérer uniquement les fichiers du type souhaité. QStringList fileList; // Variable qui contiendra tous les fichiers correspondant à notre recherche int NombreFilms; // variable pour mettre le nombre de fichiers trouvés while(dirIterator.hasNext()) // Tant qu'on n'est pas arrivé à la fin de l'arborescence... { dirIterator.next(); fileList << dirIterator.fileName(); } fileList.replaceInStrings(".film",""); // on supprime l'extension .film NombreFilms = fileList.count(); // on compte le nombre de fichiers extrait QString essai = fileList.join("\n"); // on retoune a la ligne a chaque nom de fichier QString NumTexte = QString :: number(NombreFilms); // on converti le nombre en chaine de caracteres
je pense qu'en utilisant un qrand() modulo la taille de ta liste tu pourrai avoir un indice aléatoire et donc tu n'as plus qu'a aller chercher le fichier de ta liste à cet indice![]()
Bonsoir,
Generer un chiffre aleatoire, c'est pas cela le probleme;
C'est d'utiliser ce chiffre pour extraire le nom du fichier qui correspond;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int nbAlea; nbAlea = qrand() % (NombreFilms + 1);
ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part QString testItem = fileList.count(nbAlea)->text();
Cordialement
QStringList hérite de QList, donc tu peux utiliser l'opérateur [] ou la fonction at:
Code : Sélectionner tout - Visualiser dans une fenêtre à part QString testItem = fileList.at(nbAlea);
Partager