目前我正在通过PyQT使用QT框架。我已经创建了一个自定义对象(继承自QObject),可以按照QML的预期使用它。我还在QML中创建了一个委托,它负责该对象的可视化表示,并且也按预期工作。
但是,现在我想在ListView中显示其中几个对象的列表(在委托中定义的表示)(再次在QML中)。我似乎无法弄清楚这是怎么可能的,所以有人可以给我一些指示吗?
提前感谢您的时间。
编辑:为了回应一些反应,我将尝试通过一个例子来澄清我想要实现的更多内容。这里我们有一个矩形(这只是为了清晰起见,通常这将是我的自定义对象),它有一个自定义属性(customText)和一个简单定义布局的委托,两者都有效。
ListView {
height: 1000
model: Rectangle {
property string customText: "1.jpg"
}
delegate: Rectangle {
width: 200
height: 200
Text {
anchors.fill: parent
text: model.customText
}
}
}
然而,现在我基本上不想要一个矩形(这在ListView中没有多大意义),但其中有几个例如是一个列表。我期望的是我必须将模型更改为类似的东西,但后来我得到“无法将多个值分配给单一属性”:
model: [Rectangle {
property string customText: "1.jpg"
},
Rectangle {
property string customText: "1.jpg"
},
Rectangle {
property string customText: "1.jpg"
}]
如果您需要任何进一步的信息,请与我们联系。
答案 0 :(得分:1)
您可以使用ListModel
和ListElement
qml类型。定制模型的示例实现:
ListModel {
id: modelElement
ListElement { customText : "1.jpg"}
ListElement { customText : "2.jpg"}
ListElement { customText : "3.jpg"}
ListElement { customText : "4.jpg"}
}
ListView {
height: 1000
model: modelElement
delegate: Rectangle { // You can use your custom object here
width: 200
height: 200
Text {
anchors.fill: parent
text: customText
}
}
}
ListElement
表示将使用ListView或Repeater项Ref显示的列表中的项目。
您可以将自定义对象定义为delegate
,然后将customText
分配给Text
元素。