return QVariant() def columnCount(self,parent): return len(self.titresColonnes) def
rowCount(self,parent): return len(self.livres) def data(self,index,role): if role ==
Qt.DisplayRole and index.isValid(): return (self.livres[index.row()][index.column()])
return QVariant()
Pour faciliter les évolutions futures et avoir un style plus déclaratif, nous avons mis
les titres de colonnes dans l'attribut titresColonnes : ainsi, les méthodes
headerData et columnCount ne doivent plus être modifiées.
La méthode data est assez simple, sur base de notre structure de données : on reçoit
un objet index (instance de QModelIndex) qui contient :
index.row() : un numéro de ligne qui est l'indice d'un livre dans la liste ;
index.column() : un numéro de colonne qui est l'indice d'un attribut d'un
livre : selon la définition du tuple nommé Livre vue plus haut, on a 0 pour le
titre, 1 pour l'auteur et 2 pour l'éditeur).
Comme nos livres sont stockés dans une liste de tuples nommés, l'expression
self.livres[index.row()][index.column()] renvoie en un coup l'élément
demandé. Par exemple, quand la vue demandera Que dois-je afficher dans la
cellule (ligne 1, colonne 2) ?, le modèle répondra self.livres[1][2], c'est-àdire Gallimard.
114
Précédent

- 115/494

Suivant