为什么80%的码农都做不了架构师?>>>
待补充...
##子类化 当子类化QAbstractListModel
时,必须提供rowCount()
和data()
这2个函数的实现,当然也可以提供headerData()
函数的实现来使模型表现的更加良好.
如果在QML
中使用某模型,或者需要使用超出roleNames()
函数包含的默认角色时,必须重载它,也就是必须子类化QAbstractListModel
.
当需要链表模型可编辑时,你还必须提供setData()
函数的实现,以及提供flags
函数的实现以便它返回一个包含Qt::ItemIsEditable
的值.
需要注意的一点:QAbstractListModel
提供了columnCount()
函数的一个默认实现,它会通知视图,该模型中只有一列子项.
模型提供了调整链表数据结构的接口,这可以通过insertRows()
和removeRows()
函数来实现.,当实现这些函数时,最重要的是调用适当的函数,以便所有连接的视图都知道任何更改.
- 一个
insertRows()
函数的实现:必须先执行beginInsertRow()
函数,然后插入一行新的数据,再然后必须立即执行endInsertRows()
函数. - 一个
removeRows()
函数的实现:必须先执行beginRemoveRows()
函数,然后再移除一行数据,再然后必须立即执行endRemoveRows()
函数.
注意:子类化模型的一些通用准则可以参考Model Subclassing Reference
.
参考:Model Classes
,Model Subclassing Reference
,QAbstractItemView
, QAbstractTableModel
,以及Item Views Puzzle Example
.