2011-07-20 2 views
0

J'essaie d'afficher certaines cartes dans un QListView mais j'ai vraiment du mal à comprendre comment utiliser le modèle modèle/vue de Qt, et je ne trouve pas d'exemples simples.Comment utiliser la programmation Model-View de Qt

Fondamentalement, j'ai deux classes:

  • carte - mon "modèle" qui contient le nom de la carte, id, etc.

  • CardWidget - peut charger et rendre un objet carte (afficher le nom de la carte et d'autres informations)

Comment puis-je utiliser Card et CardWidget pour afficher une liste de cartes dans un ListView? Dois-je changer quelque chose dans mes cours, ou QListView devrait-il être capable de les afficher directement?

Si quelqu'un pouvait me montrer les étapes de base ou me diriger dans la bonne direction, ce serait parfait.

Répondre

2

Voir la documentation de QAbstractItemDelegate, qui présente un exemple de rendu d'éléments dans un QTableView.

Ce n'est pas évident ce que vous essayez de faire ici - dans une vue de liste, vous pouvez afficher une vue d'un élément qui n'est pas la même chose que d'avoir un widget dans chaque cellule. Un délégué d'élément peut fournir un widget en tant qu'éditeur et également comment rendre le contenu d'une cellule.

Si vous voulez réellement des widgets fixes dans la vue, vous pouvez utiliser QListView :: openPersistentEditor sur toutes les cellules pour lesquelles vous voulez un widget fixe. Le délégué d'élément devrait décrire comment créer un éditeur pour la cellule en question.

+0

Merci, mais j'ai fini par rouler mon propre QWidget pour lister les cartes. Le cadre de modèle/vue de Qt semble bon pour les choses intégrées comme les visionneuses de fichiers, la liste de chaînes, etc., mais trop compliqué à utiliser pour les choses non par défaut. –