Pregunta

Entiendo más o menos cómo funciona el MPV. Pero no entiendo qué clases:

  • QAbstractItemModel
  • QAbstractItemView
  • QAbstractItemDelegate / QItemDelegate

¿Se puede hacer por mí?

Si eso es relevante, estoy usando QGraphicsScene / QGraphicsView con algunos elementos (representación visual del tablero de juego) con los que el usuario puede interactuar, mientras que la lógica de interacción (reglas del juego) está encapsulada en otra clase.

¿Fue útil?

Solución

AbstractItemModel QAbstractItemView QAbstractItemDelegate

Son de " Marco de modo / vista "
Este es un marco muy poderoso para la parte de datos de su aplicación, aquí es una presentación de El marco.

QAbstractItemModel

Es la clase base para el modelo de MVC . Tiene una interfaz global para acceder y alterar los datos y se ocupa de la parte observable.

QAbstractItemView

Es la clase base para la vista del MVC . Tiene una interfaz global para la parte de vistas / selecciones y se encarga de la parte de observador. No tiene que preocuparse por el patrón de observador, el marco lo hace por usted.

QAbstractItemDelegate

Es la clase base para el controlador del MVC .
Es el patrón de estrategia para pintar, editar los elementos, ...


QGraphicsScene / QGraphicsView

Son de " El Marco de Vista Gráfica " y es < fuerte> independiente del marco Modelo / Vista.
Este es también un marco muy poderoso para la parte de gráficos.

  

La escena

     

QGraphicsScene proporciona los gráficos   Ver escena La escena tiene la   siguientes responsabilidades:

     

Proporcionar una interfaz rápida para   gestionando una gran cantidad de artículos   Propagando eventos a cada elemento.   Gestión del estado del elemento, como la selección   y manejo de enfoque Proporcionar   funcionalidad de renderización no transformada;   principalmente para la impresión

     

La vista

     

QGraphicsView proporciona la vista   Widget, que visualiza los contenidos.   de una escena. Puede adjuntar varios   vistas a la misma escena, para proporcionar   varias vistas en los mismos datos   conjunto


Si desea que un modelo sea visible en un QGraphicsView, tendrá que escribir su propia vista basada en el QAbstractItemView.
Tome un widget de QGraphicsView como puerto de vista QAbstractScrollArea :: setViewport (QWidget * widget)) y luego podrá

  • agregar QAbstractItemView :: rowsInserted ,
  • eliminar QAbstractItemView::rowsAboutToBeRemoved
  • y cambiar QAbstractItemView::dataChanged

los elementos en la escena. No te olvides de encargarte de restablecer y cambiar los eventos de cambio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top