Question

J'ai un modèle 2D dans lequel chaque ligne représente une image dans une vidéo et chaque colonne représente un objet. L'objet peut avoir différents états sur chaque image, et cela est stocké dans le modèle. Ensuite, j'ai un QTableView qui montre ces données. Le modèle a des données d’en-tête, donc chaque ligne a un en-tête du type "cadre k". et chaque colonne a un en-tête comme "objet n". Ce tableau est éditable. Mais je veux que l'utilisateur le modifie d'une autre manière. L'autre façon est une vue graphique qui montre une seule image. Sous la vue graphique se trouve une liste (orientée horizontalement) qui représente chaque image. De cette façon, l'utilisateur peut cliquer sur un cadre de la liste et la vue graphique affiche maintenant ce cadre.

Le problème est que la liste affiche la première colonne de chaque ligne du modèle. Ce que je souhaite, c’est d’afficher à la place l’en-tête de chaque ligne (la liste indique donc "image 1, image 2, etc."). Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Deux solutions possibles:

  1. Essayez d'utiliser un modèle de proxy (une sous-classe de QAbstractProxyModel) qui accède aux en-têtes de ligne sous forme de colonnes d'une seule ligne. Ce n'est pas anodin, car le modèle proxy affiche sous forme de données ce que le modèle d'origine considère comme un en-tête.

  2. Affichez une deuxième vue 2D de votre modèle, mais masquez tout, à l'exception des en-têtes de colonne. Comme vos cadres sont des lignes, vous aurez besoin d’un modèle de proxy pour transposer les lignes et les colonnes.

AVERTISSEMENT: je n’ai réellement implémenté aucune des solutions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top