【发布时间】:2019-07-20 20:05:06
【问题描述】:
以下问题是关于 QAbstractItemModel 和 QModelIndex 类的设计以及它们之间的相互作用,如下面的代码示例所示:
class Data:
def __init__(self):
self.value = 42
class Model( QAbstractItemModel ):
def __init__( self ):
QAbstractItemModel.__init__(self)
data = Data()
modelIndex = self.createIndex( 1 , 2 , data ) ### 1
self.index( 1 , 2 , QModelIndex() ) ### 2
self.setData( modelIndex , data.value ) ### 3
self.dataChanged.emit( modelIndex , modelIndex )
modelIndex.data() ###4
self.data( modelIndex ) ### 5
- 应该如何创建
QModelIndex。根据我对文档的阅读,答案是QAbstractItemModel::createIndex(),但它似乎不完整,因为此函数不提供有关 ModelIndex 与其父级的偏移量的任何信息。相反,这是由QAbstractItemModel::index() 完成的。有没有办法让这两个功能一起发挥作用? - 应如何将数据存储在模型索引中,由模型索引、为模型索引或在模型索引中(不确定术语)存储的数据与internal pointer 之间的区别是什么?当模型索引没有 setData 函数时,它从哪里获得返回的data?内部指针是数据吗?可以是数据吗?
- ModelIndex和Model返回的数据有什么区别?即QModelIndex::data() 和QAbstractItemModel::data( QModelIndex , int )?为什么 setter QAbstractItemModel::setData( QModelIndex , ... ) 只是虚拟的,而 getter QAbstractItemModel::data( QModelIndex , ... ) 是纯虚拟的。当然,API 应该能够返回它存储的数据。
我知道我的问题链接到 C++ API,而 sn-p 在 PySide 中。我这样做是因为这个问题涉及两个 API。
【问题讨论】:
标签: python pyside qabstractitemmodel qmodelindex