index不是附加属性,它是上下文属性。
由于Repeater实例化委托本身,因此它可以在这样做时提供自定义上下文。
在这种情况下index,您拥有模型的每个角色的属性(或者modelData如果它是没有角色的模型)和model包含所有前面提到的属性的对象属性。该model对象能够使用更限定的名称访问其他属性,以避免阴影。例如,如果您的源模型有一个text角色并且您的委托有一个text属性,那么做text: text不会走得太远。要解决这个问题,你可以这样做text: model.text。
总而言之,您的委托可以访问这些上下文属性:
对于没有角色的模型(QStringList、QObjectList、JS 数组、整数……):
indexmodelDatamodel
.index.modelData对于具有角色的模型(a c++ QAbstractListModel, ListModel, ...):
indexrole1role2model
.index.role1.role2为什么ListView使用附加属性(例如ListView.isCurrentItem而不是上下文属性)是因为ListView不直接实例化其委托。它在内部使用QQmlDelegateModel(Repeater也使用它)。它QQmlDelegateModel公开索引和角色上下文属性,但它不知道ListView特定属性,因此ListView必须随后通过附加属性公开它们。
| 归档时间: |
|
| 查看次数: |
4837 次 |
| 最近记录: |