-
05-07-2019 - |
题
我的理解或多或少是如何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
该项目现场。别忘了照顾重置布局的变化的事件。