AbstractItemModel QAbstractItemView QAbstractItemDelegate
Из "Рамки режима / просмотра"
Это очень мощный фреймворк для части данных вашего приложения, здесь - представление фреймворка.
QAbstractItemModel
Базовый класс для модели MVC . Имеет глобальный интерфейс для доступа и изменения данных и заботится о наблюдаемой части.
QAbstractItemView
Базовый класс для представления MVC . Имеет aglobal интерфейс для части просмотра / выбора, и он заботится о части Observer. Вам не нужно беспокоиться о шаблоне наблюдателя, фреймворк сделает это за вас.
QAbstractItemDelegate
Базовый класс для контроллера MVC .
Это шаблон стратегии для рисования, редактирования элементов, ...
QGraphicsScene / QGraphicsView
Из "Каркаса графического представления" и не зависит от каркаса Модель / представление.
Это также очень мощный фреймворк для графической части.
Сцена
QGraphicsScene предоставляет графику
Просмотр сцены. Сцена имеет
следующие обязанности:
Обеспечение быстрого интерфейса для
управление большим количеством предметов
Распространение событий на каждый предмет
Управление состоянием элемента, такое как выбор
и фокусировка
нетрансформированная функциональность рендеринга;
в основном для печати
Вид
QGraphicsView обеспечивает представление
виджет, который визуализирует содержимое
сцены. Вы можете прикрепить несколько
взгляды на ту же сцену, чтобы обеспечить
несколько видов на одни и те же данные
набор
Если вы хотите, чтобы Модель была видимой в QGraphicsView, вам придется написать свое собственное представление на основе QAbstractItemView.
Возьмите QGraphicsView в качестве виджета порта просмотра QAbstractScrollArea::setViewport(QWidget * widget))
, и тогда вы сможете
- add
QAbstractItemView::rowsInserted
,
- удалить
QAbstractItemView::rowsAboutToBeRemoved
- и изменить
QAbstractItemView::dataChanged
предметы на сцене. Не забудьте позаботиться о сбросе событий изменения макета.