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 :

Modèle pour fichiers et dossiers (QFileSystemMode ?)

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut Modèle pour fichiers et dossiers (QFileSystemMode ?)
    Bonjour,

    J'aimerais pouvoir afficher dans une vue, une liste de fichiers que je récupère dans une base de données (ou pour faire plus simple, dans une liste). J'ai donc créé une nouvelle class qui hérite de QFileSystemModel, mais j'avoue ne pas trop savoir quelles méthodes je dois réimplémenter. Si j'ai bien tout compris, c'est surtout la méthode data() qui s'occupe d'envoyer à la vue les éléments à afficher. Ainsi, j'ai overridé la méthode data de la manière suivante:

    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
     
    data(modelIndex, role=Qt.DisplayRole) {
        if !modelIndex.isValid() {
            return QVariant()
        }
        if modelIndex.row() >= files_list.size() {
            return QVariant()
        }
        if role == Qt.DisplayRole {
            return files_list.get(modelIndex.row())
        }
        else {
            return QVariant()
        }
    }
    C'est bien entendu du pseudo-code.

    Ma liste files_list contient des strings mais ils ne s'affichent pas dans la vue. J'ai bien tenté avec une liste de QFileInfo, mais c'est pareil, rien ne s'affiche.

    Est-ce que je m'y prends mal ? Comment devrais-je faire exactement pour afficher dans une vue, un certain nombre de fichiers/dossiers prédéfinis dans une liste ? Idéalement j'aimerais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List listOfFilesToPutInTheView
    listOfFilesToPutInTheView << "fichier1" << "dossier1" << "fichier2" << "dossier2"
    MyFileSystemModel model = new MyFileSystemModel(listOfFilesToPutInTheView)
    myview.setModel(model)
    Je vous remercie d'avance!!

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    La partie model/view de Qt est pas très facile à appréhender je trouve :
    http://qt.developpez.com/doc/latest/...ogramming.html

    Dans ton cas, QFileSystemModel est fournie pour lire un répertoire et des fichiers. Si j'ai bien compris tu souhaites le même affichage mais la source des données serait différente. Si tu ne réimplémente que la fonction data, ça ne suffit pas. Un modèle de base doit fournir plusieurs fonctions virtuelles pures de la classe QAbstractItemModel (par exemple rowCount qui doit renvoyer le nombre d'élément, qui dans QFileSystemModel ne doit pas être cohérente avec tes propres données).

    Je ne pense pas que tu puisses réutiliser facilement QFileSystemModel en utilisant des données dans une BDD. Tu devras probablement faire ton propre modèle à partir de QAbstractItemModel.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    Si tu veux simplement afficher la liste des fichiers, regarde du côté de QStringListModel...

    Par contre si tu veux afficher ta liste sous forme arborescente, il faudra que tu fasses toi même ton modèle à partir de QAbstractItemModel comme le dit YoniBlond.

    Par contre, ce que tu peux faire, c'est regarder comment est implémenté QFileSystemModel ... Le Data Model est effectivement un peu difficile à digérer, surtout quand il s'agit d'une structure arborescente... entre les index(), parent()... c'est un peu le bordel...

Discussions similaires

  1. Un modèle pour afficher les dossiers/fichiers
    Par rakba dans le forum Composants
    Réponses: 0
    Dernier message: 18/12/2011, 01h02
  2. Réponses: 0
    Dernier message: 17/12/2007, 12h05
  3. Réponses: 1
    Dernier message: 08/08/2007, 09h38
  4. Réponses: 14
    Dernier message: 01/05/2007, 19h25
  5. [langage] fonction pour fichier ou bien dossier
    Par moniatn dans le forum Langage
    Réponses: 6
    Dernier message: 26/10/2006, 01h39

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