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