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

PyQt Python Discussion :

QTreeView/ QModelIndex : child fonctionnement [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut QTreeView/ QModelIndex : child fonctionnement
    Bonjour à tous

    J'ai un objet QTreeView auquel j'ai appliqué un model comprenant des QStandardItem qui sont hiérarchisé d'une certaine façon à l'aide de la fonction appendRow
    Je me retrouve donc avec un arbre. (un père a au plus un fils)
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Racine1
    |
    --Fils1.1
       |
        --Fils1.1.1
    Racine2
    |
    --Fils2.1
       |
       -- Fils2.1.1
    J'arrive à obtenir l'item sélectionné grâce à la méthode selectedIndexes() [0]
    néanmoins, je n'arrive pas à parcourir la branche en dessous de cet objet (autrement dis à récupérer ses fils)
    J'ai essayé avec child mais cela ne fonctionne pas pour certain nœud :
    les nœuds racine hormis le premier ne fonctionne pas donc dans mon exemple pour Racine2 ne fonctionne pas alors que les autres nœud si
    Mon code simplifié:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    index = self.tree.selectedIndexes()[0]
    print "index :" , self.model.data(index).toString() 
    print index
    child = index.child(index.row(), index.column())
    print child
    print "child :" , self.model.data(child).toString()

    Exemple de résultat pour un noeud qui ne fonctionne pas :
    index : Racine2
    <PyQt4.QtCore.QModelIndex object at 0x0928C730>
    <PyQt4.QtCore.QModelIndex object at 0x0928C848>
    child :

    Exemple de résultat pour un noeud qui fonctionne :
    index : Fils2.1
    <PyQt4.QtCore.QModelIndex object at 0x0928C538>
    <PyQt4.QtCore.QModelIndex object at 0x0928C8F0>
    child : Fils 2.1.1

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut
    Bonjour

    a ton model tu as une fonction accessible itemFromIndex()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    it = self.model.itemFromIndex(index)
    ensuite tu peux récuper les child par QStandardItem.child (self, int row, int column = 0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    child = it.child(0)
    essaie ceci...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Merci pour la réponse
    avec le code proposé, je n'ai plus rien pour le fils quelque soit le père :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    index = self.tree.selectedIndexes()[0]
    it = self.model.itemFromIndex(index)
    print self.model.data(index).toString()
    #affiche Racine1     
    print "child: ", it.child(0).data().toString()
    #Affiche child:

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut
    et qu'obtiens tu avec it.child(0).text() ???

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    A priori ça fonctionne avec le text
    du moins pour le petit bout de code que j'ai donné
    Maintenant il va falloir que j'adapte mon vrai code mais je pense y arriver seul

    Merci pour ton aide

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

Discussions similaires

  1. Remove child basique qui ne fonctionne pas
    Par webpxis dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2010, 21h10
  2. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  3. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. [Kylix] Labels du QTreeView tronqués
    Par Mister Nono dans le forum EDI
    Réponses: 3
    Dernier message: 05/11/2002, 19h45

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