Qt 第56课、模型视图设计模式(中)

  • 模型视图设计模式
    — 模型定义标准接口(成员函数)对数据进行访问
    — 视图通过标准接口获取数据并定义显示方式
    — 模型使用信号与槽的机制通知视图数据变化
    — 模型的数据都是以层次结构表示的
  • 模型中的索引:
    — 模型索引是数据与视图分离的重要机制
    — 模型中的数据使用唯一的索引来访问
    — 索引是访问模型中具体数据的约定方式
    — QModelIndex 是 Qt 中的模型索引类:
      包含具体数据的访问途径
      包含一个指向模型的指针
  • 索引的意义:
    Qt 第56课、模型视图设计模式(中)
  • 索引中的行和列:
    线性模型可以使用(row,column)作为数据索引
    Qt 第56课、模型视图设计模式(中)

问题:只用行和列描述数据索引是否足够通用?
思考:如何索引以树形结构组织的数据?
Qt 第56课、模型视图设计模式(中)

  • 模型中的通用树形结构:
    Qt 第56课、模型视图设计模式(中)
  • 模型中数据索引的通用方式:
    三元组:(row、column、parent)
    Qt 第56课、模型视图设计模式(中)
    Qt 第56课、模型视图设计模式(中)

小结:

  • 索引是访问模型中具体数据的约定方式
  • 获取索引的通过形式为三元组(row、column、parent)
  • 索引在需要时由模型实时创建
  • 使用空索引作为父节点表示顶层数据元素
  • 特殊的模型可以自定义特殊的索引获取方式