以下问题是关于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()完成的。有没有办法让两个功能一起玩? - 数据应该如何存储在模型索引中,模型索引和内部指针存储的数据、为模型索引或在(不确定术语)中存储的数据有什么区别?当没有 setData 函数时,模型索引从哪里获取它返回的数据?内部指针是数据吗?它永远是数据吗?
- ModelIndex和Model返回的数据有什么区别?即QModelIndex::data()和QAbstractItemModel::data( QModelIndex , int )?为什么设置器QAbstractItemModel::setData( QModelIndex , ... )仅仅是虚拟的,而获取器QAbstractItemModel::data( QModelIndex , ... )是纯虚拟的。当然,API 应该能够返回它存储的数据。
我知道我的问题链接到 C++ API,而代码片段在 PySide 中。我这样做是因为这个问题跨越了两个 API。