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

  1. #1
    Membre habitué
    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
    Points : 126
    Points
    126
    Par défaut Comment récupérer le chemin d'un type de fichier de façon aléatoire dans un répertoire à chaque ouverture ?
    Bonsoir,

    Comment recuperer le chemin d'un type de fichier de façon aleatoire dans un repertoire a chaque ouverture de son application?

    Cordialement

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 71
    Points
    71
    Par défaut
    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.

  3. #3
    Membre habitué
    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
    Points : 126
    Points
    126
    Par défaut Merci
    Merci,

    j'en ai fait la liste et j'en ai même extrait le nombre, mais comment justement tu en prend un aleatoirement ?

    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
    Cordialement

  4. #4
    Membre régulier
    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
    Points : 88
    Points
    88
    Par défaut
    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

  5. #5
    Membre habitué
    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
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,
    Generer un chiffre aleatoire, c'est pas cela le probleme;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nbAlea;
    nbAlea = qrand() % (NombreFilms + 1);
    C'est d'utiliser ce chiffre pour extraire le nom du fichier qui correspond;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString testItem = fileList.count(nbAlea)->text();
    ne fonctionne pas

    Cordialement

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 71
    Points
    71
    Par défaut
    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);

  7. #7
    Membre habitué
    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
    Points : 126
    Points
    126
    Par défaut Conclusion :
    Bonjour,

    Merci Beaucoup

    Le resultat :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #include "xavtest1.h" // pour utilisé le contenu de ce fichier dans XavTest1.cpp
    #include <QtGui> // pour inclure tout les composants
    // (ralenti l'application, on peut declarer les composants utilisés un par un)
    XavTest1::XavTest1(QWidget *parent)
        : QWidget(parent)
    {
    QGridLayout *grid = new QGridLayout; // widget grille pour disposer les differents composants
    QHBoxLayout *layout = new QHBoxLayout; // l'interieur de la fenetre
    layout->addWidget(tab); // on installe le classeur a l'interieur de la fenetre
    QWidget *onglet0 = new QWidget(); // ce classeur a un onglet 0
    onglet0->setLayout(grid); // dans l'onglet 0 on installe le composant grille pour placer les differents widgets
    tab->addTab(onglet0, tr("&FicheFilms")); // on donne un titre a l'onglet tr() pour traduction futur
    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...
    {
    //fileList << dirIterator.next(); // ...on va au prochain fichier correspondant à notre filtre
     dirIterator.next(); // suivant
     fileList << dirIterator.fileName();// Nom du fichier dans fileList
     }
    fileList.replaceInStrings(".film",""); // on supprime l'extension .film
    NombreFilms = fileList.count(); // nombre de fichiers
    QString essai = fileList.join("\n"); // on retoune a la ligne a chaque nom de fichier
    QPlainTextEdit *Essai = new QPlainTextEdit(essai); // on l'affiche dans un QPlainTextEdit
    grid->addWidget(Essai, 0, 0, 1, 2); // que l'on place dans la grille ...
    QString NumTexte = QString :: number(NombreFilms); // on converti le nombre en chaine de caracteres
    QPlainTextEdit *Essai2 = new QPlainTextEdit(NumTexte); // on l'affiche dans un QPlainTextEdit
    grid->addWidget(Essai2, 0, 2, 1, 2); // que l'on place dans la grille ...
    int nbAlea; // declaration de la variable nbAlea
    qsrand( QDateTime::currentDateTime().toTime_t() ); // initialisation de la fonction aleatoire
    nbAlea = qrand() % (NombreFilms + 1); // nbAlea de 1 a NombreFilms
    QString testItem = fileList.at(nbAlea); // testItem = nom du fichier du numero de ligne aleatoire selectionné
    QPlainTextEdit *Essai3 = new QPlainTextEdit(testItem); // on l'affiche dans un QPlainTextEdit
    grid->addWidget(Essai3, 0, 4, 1, 2); // que l'on place dans la grille ...
    setLayout(layout); // pour afficher tout ci-dessus
    }
    je suis ouvert a toutes critiques
    Cordialement

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

Discussions similaires

  1. Comment récupérer le chemin en relatif d'un fichier
    Par pascalcom dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/06/2007, 08h26
  2. Réponses: 4
    Dernier message: 08/08/2006, 23h33
  3. Réponses: 13
    Dernier message: 10/04/2006, 17h25
  4. Réponses: 1
    Dernier message: 18/11/2005, 16h55
  5. Comment récupérer le chemin d'une table liée
    Par ptitepunk dans le forum Access
    Réponses: 2
    Dernier message: 15/09/2005, 10h47

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