Tu remarqueras que de toute façon ce paramètre est optionnel, en général on n'a pas besoin de se servir des internalPointer ou de redéfinir index() (on prend index.row()/column() et on retourne tabItem[index.row()] par exemple). Après c'est toi qui vois, tu peux très bien enregistrer un pointeur sur le même objet Joueur que le parent pour l'avoir directement (même si ce n'est pas coûteux de faire index.parent().internalPointer() ). Ce que j'appelle "enregistrer dans l'internalPointer" c'est bien d'utiliser cette possibilité optionnelle du pointeur void* dans un objet QModelIndex pour pointer directement l'objet qu'on veut plutôt que de faire un accès plus coûteux dans la QList ou autre.
C'est glauque mais bon on se comprend :p
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 // index ( row, column, parent ) Cas 1 : parent invalide createIndex ( row, column, uneEquipe ) Cas 2 : grand-parent invalide createIndex ( row, column, unJoueur ) Cas 3 : arrière-grand-parent invalide createIndex ( row, column ) Autre : QModelIndex()
Et ensuite selon ton implémentation de la création des index, tu vas en tirer partie dans data() pour retourner les données ou dans setData() pour les modifier.
Partager