我的理解或多或少是如何MPV工作。但我没得到什么类:

  • QAbstractItemModel
  • QAbstractItemView
  • QAbstractItemDelegate / QItemDelegate

可以为我做?

如果这是相关的,我用的 QGraphicsScene / QGraphicsView 有些元件(视表示的游戏盘),用户可以进行互动时的相互作用的逻辑(游戏规则》)都包封在其他类。

有帮助吗?

解决方案

AbstractItemModel QAbstractItemView QAbstractItemDelegate

是从 "模式/视图的框架"
这是一个非常强有力的框架,用于数据应用程序的一部分, 在这里, 是一个介绍该框架。

QAbstractItemModel

是的基类的 模型中的视.有一个全球性的访问的接口,并改变的数据和需要照顾的可观察的一部分。

QAbstractItemView

是的基类的 看电视.有aglobal界面查看/选择的一部分,它需要照顾的观察员的一部分。你不必担心观察员的模式,该框架不会给你。

QAbstractItemDelegate

是的基类的 控制器的电视.
是的战略模式绘画、编辑。


QGraphicsScene/QGraphicsView

是从 "图形看框架" 和是 独立模型/视图的框架。
这也是一个非常强有力的框架形的一部分。

场景

QGraphicsScene提供的图形 看现场。现场有 以下责任:

提供一个快速的接口 管理一个大型的项目数量 传播活动,以每个项目 管理项目的国家,例如选择 并重点处理提供的 未转化呈现的功能;主要用于印刷

视图

QGraphicsView提供的图 部件,其中显示的内容 一场景。你可以将几个 意见相同的场景,以提供 几视为同一数据 设置


如果你想有一个模型可见,在一个QGraphicsView比你会写自己的观点的基础上QAbstractItemView.
采取一QGraphicsView作为观口部件 QAbstractScrollArea::setViewport(QWidget * widget)) 然后你就可以

  • 添加 QAbstractItemView::rowsInserted,
  • 删除 QAbstractItemView::rowsAboutToBeRemoved
  • 改变 QAbstractItemView::dataChanged

该项目现场。别忘了照顾重置布局的变化的事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top