J'utilise une tableview avec le modèle associé étendu avec QSortFilterProxyModel en raison du tri et/ou du filtrage. Tout fonctionne bien sauf les numéros de ligne (je veux dire en-tête verticale). En utilisant le code suivant:QSortFilterProxyModèle et numéros de ligne
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return self.__header[section]
elif orientation == QtCore.Qt.Vertical:
return section + 1
numéro de la ligne fixe est affectée à chaque ligne. Et cela provoque des problèmes lors du tri/filtrage. J'ai trouvé une solution: remplacer les méthodes de filtrage et de tri par défaut et mettre un paramètre supplémentaire (numéro de ligne) dans les données et le réécrire pendant chaque tri ou filtrage.
Question: existe-t-il une autre solution pour cela? Une méthode qui me montre la position réelle de l'objet après la manipulation de tri/filtrage?
Avez-vous vraiment besoin de ces en-têtes? Ce serait beaucoup plus simple si vous ajoutiez une autre colonne dans votre modèle pour le 'numéro de ligne'. – Avaris
Oui, je préfère les en-têtes plutôt que les cellules car cela semble plus intuitif – Miso
Attendez ... Je pense que j'ai mal compris. 'QSortFilterProxyModel' conserve les nombres originaux intacts. Mais tu ne veux pas ça? Vous voulez que le numéro de ligne passe de "1" à "N" après le tri, quel que soit l'emplacement de la ligne d'origine, n'est-ce pas? – Avaris