次の質問は、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 とモデルによって返されるデータの違いは何ですか? つまりQModelIndex::data()とQAbstractItemModel::data( QModelIndex , int ) ? そして、セッターQAbstractItemModel::setData( QModelIndex , ... )は単に仮想であるのに、ゲッターQAbstractItemModel::data( QModelIndex , ... ) は純粋な仮想であるのはなぜですか。確かに、API は保存したデータを返すことができるはずです。
私の質問はC++ APIにリンクしていますが、スニペットはPySideにあります。この質問は両方の API にまたがっているため、そうしました。