Model - View - Controller in Qt
-
05-07-2019 - |
Frage
Ich verstehe mehr oder weniger wie funktioniert MPV arbeitet. Aber ich habe nicht, welche Klassen:
-
QAbstractItemModel
-
QAbstractItemView
-
QAbstractItemDelegate
/QItemDelegate
Kann für mich tun?
Wenn das relevant ist, ich bin mit
QGraphicsScene
/ QGraphicsView
mit einigen Elementen (visuelle Darstellung des Spielbrettes), dass Benutzer kann mit interagieren, während die Interaktionslogik (Spielregeln) ist in anderer Klasse gekapselt.
Lösung
AbstractItemModel QAbstractItemView QAbstractItemDelegate
Sind von der "Mode / Blick Rahmen"
Dies ist ein sehr mächtiges Framework für die Daten Teil Ihrer Anwendung, hier ist eine Präsentation von der Rahmen.
QAbstractItemModel
ist die Basisklasse für das Modell des MVC . Hat eine globale Schnittstelle für den Zugriff auf und das Ändern der Daten und kümmert sich um den beobachtbaren Teil.
QAbstractItemView
ist die Basisklasse für die Ansicht des MVC . Hat aglobal Schnittstelle für die Ansicht / Auswahlen Teil und es kümmert sich um den Beobachter teil. Sie müssen nicht über das Beobachter-Muster Sorge, der Rahmen macht es für Sie.
QAbstractItemDelegate
ist die Basisklasse für die Controller des MVC .
Ist das Strategie-Muster für die Malerei, die Bearbeitung der Elemente, ...
QGraphicsScene / QGraphicsView
Sind von der "Die Grafik-Ansicht Framework" und ist unabhängig von dem Model / View-Framework.
Dies ist auch ein sehr mächtiges Framework für den Grafikteil.
Die Szene
QGraphicsScene stellt die Grafik Ansicht Szene. Die Szene hat die folgende Aufgaben:
Die Bereitstellung einer schnellen Schnittstelle für eine große Anzahl von Elementen verwalten Propagierung von Veranstaltungen zu jedem Artikel Verwalten von Artikel Zustand, wie Auswahl und konzentrieren Umgang Providing untransformierten Rendering-Funktionalität; vor allem für den Druck
Die Ansicht
QGraphicsView bietet die Aussicht Widget, das die Inhalte visualisiert eine Szene. Sie können mehrere anhängen Ansichten der gleichen Szene, zur Verfügung zu stellen mehrere Ansichtsfenster in die gleichen Daten set
Wenn Sie ein Modell in einem QGraphicsView sichtbar zu sein, als Sie Ihre eigene Meinung schreiben basieren muss auf dem QAbstractItemView.
Nehmen Sie einen QGraphicsView als Viewport-Widget QAbstractScrollArea::setViewport(QWidget * widget))
und dann können Sie
- hinzufügen
QAbstractItemView::rowsInserted
, - Entfernen
QAbstractItemView::rowsAboutToBeRemoved
- und ändern
QAbstractItemView::dataChanged
die Elemente in der Szene. Vergessen Sie nicht, Pflege des Reset ein Layout-Änderungsereignisse zu nehmen.