Question

Je comprends plus ou moins comment fonctionne le monospace. Mais je ne comprends pas quelles classes:

  • QAbstractItemModel
  • QAbstractItemView
  • QAbstractItemDelegate / QItemDelegate

Peut faire pour moi?

Si cela est pertinent, j'utilise QGraphicsScene / QGraphicsView avec certains éléments (représentation visuelle du plateau de jeu) avec lesquels l'utilisateur peut interagir tandis que la logique d'interaction (règles de jeu) est encapsulée dans une autre classe.

Était-ce utile?

La solution

AbstractItemModel QAbstractItemView QAbstractItemDelegate

Sont issus du " Cadre "Mode / View" & <; >
Il s’agit d’un framework très puissant pour la partie données de votre application.
voici une présentation de le cadre.

QAbstractItemModel

Il s'agit de la classe de base du modèle du MVC . Possède une interface globale pour accéder aux données et les modifier, et s’occupe de la partie Observable.

QAbstractItemView

Il s'agit de la classe de base pour la vue du MVC . Possède une interface globale pour la partie vue / sélections et prend en charge la partie observateur. Vous n'avez pas à vous soucier du modèle d'observateur, le framework le fait pour vous.

QAbstractItemDelegate

Il s'agit de la classe de base du contrôleur du MVC .
Est-ce que le motif Stratégie pour peindre, éditer les éléments, ...

QGraphicsScene / QGraphicsView

Appartiennent au "Le cadre d'affichage de graphiques" et est < strong> indépendant du cadre Modèle / Vue.
C'est aussi un framework très puissant pour la partie graphique.

  

La scène

     

QGraphicsScene fournit les graphiques   Voir la scène. La scène a la   responsabilités suivantes:

     

Fournir une interface rapide pour   gérer un grand nombre d'articles   Propager des événements à chaque élément   Gestion de l'état de l'élément, tel que la sélection   et se concentrer sur la gestion   fonctionnalité de rendu non transformée;   principalement pour l'impression

     

La vue

     

QGraphicsView fournit la vue   widget, qui visualise le contenu   d'une scène. Vous pouvez joindre plusieurs   vues sur la même scène, pour fournir   plusieurs fenêtres dans les mêmes données   définir

Si vous souhaitez qu'un modèle soit visible dans un QGraphicsView, vous devrez écrire votre propre vue sur la base de QAbstractItemView.
Utilisez QGraphicsView en tant que widget de port d'affichage QAbstractScrollArea :: setViewport (widget QWidget *)) , puis vous pouvez

  • ajouter QAbstractItemView :: rowsInserted ,
  • supprimer QAbstractItemView :: rowsAboutToBeRemoved
  • et changer QAbstractItemView :: dataChanged

les éléments de la scène. N'oubliez pas de prendre soin de réinitialiser les événements de changement de présentation.

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