Qt Model/View/Delegate浅谈 - QAbstractListModel

为什么80%的码农都做不了架构师?>>>   hot3.png

待补充...

##子类化 当子类化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.

转载于:https://my.oschina.net/jannn/blog/661491

你可能感兴趣的:(Qt Model/View/Delegate浅谈 - QAbstractListModel)