Domanda

Capisco più o meno come funziona MPV. Ma non capisco quali classi:

  • QAbstractItemModel
  • QAbstractItemView
  • QAbstractItemDelegate / QItemDelegate

Puoi fare per me?

Se questo è rilevante, sto usando QGraphicsScene / QGraphicsView con alcuni elementi (rappresentazione visiva del tabellone) con cui l'utente può interagire mentre la logica di interazione (regole del gioco) viene incapsulata in un'altra classe.

È stato utile?

Soluzione

AbstractItemModel QAbstractItemView QAbstractItemDelegate

Provengono dal " Mode / View framework "
Questo è un framework molto potente per la parte di dati della tua applicazione, qui è una presentazione di il framework.

QAbstractItemModel

È la classe base per il modello di MVC . Ha un'interfaccia globale per l'accesso e la modifica dei dati e si occupa della parte osservabile.

QAbstractItemView

È la classe base per la visualizzazione dell'MVC . Ha un'interfaccia aglobal per la parte vista / selezioni e si occupa della parte Observer. Non devi preoccuparti del modello di osservatore, il framework lo fa per te.

QAbstractItemDelegate

È la classe base per il controller di MVC .
È il modello strategico per dipingere, modificare gli elementi, ...


QGraphicsScene / QGraphicsView

Sono del " The Graphics View Framework " ed è < strong> indipendente dal framework Model / View.
Questo è anche un framework molto potente per la parte grafica.

  

La scena

     

QGraphicsScene fornisce la grafica   Vedi scena. La scena ha il   seguenti responsabilità:

     

Fornendo un'interfaccia veloce per   gestire un gran numero di articoli   Propagare eventi per ogni oggetto   Gestione dello stato degli articoli, come la selezione   e gestione della messa a fuoco   funzionalità di rendering non trasformato;   principalmente per la stampa

     

La vista

     

QGraphicsView fornisce la vista   widget, che visualizza i contenuti   di una scena. Puoi allegarne diversi   vista sulla stessa scena, per fornire   più finestre negli stessi dati   set


Se si desidera che un modello sia visibile in un QGraphicsView, è necessario scrivere la propria vista in base al QAbstractItemView.
Prendi un QGraphicsView come widget di visualizzazione porta QAbstractScrollArea :: setViewport (widget QWidget *) e poi puoi

  • aggiungi QAbstractItemView :: rowsInserted ,
  • rimuovi QAbstractItemView::rowsAboutToBeRemoved
  • e modifica QAbstractItemView::dataChanged

gli oggetti nella scena. Non dimenticare di occuparti della reimpostazione degli eventi di modifica del layout.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top