Modèle - Vue - Contrôleur en Qt
-
05-07-2019 - |
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.
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.