有没有办法使用自定义委托作为
ListView
的每两个连续项之间的分隔符,就像 header
和 footer
属性一样?
A
ListView
可以分为 sections
,也称为组。该文档提供了一个很好的示例here。
基本上,您定义一个
Component
,就像定义 Header
和 Footer
一样,并将其设置在 section.delegate
子属性中。代码中:
ListView {
id: view
[...]
section.property: "size" // <--- the splitting property name
section.criteria: ViewSection.FullString // <--- specify the way section is created (see the provided link)
section.delegate: sectionDelegate // <--- your delegate
}
将您的项目放入带有上面这样的矩形的 ColumnLayout 中:
ListView {
id: list
clip: true
model: ...
spacing: 3
Layout.fillHeight: true
Layout.fillWidth: true
delegate: ColumnLayout {
width: list.width
spacing: list.spacing
MyItemDelegate {
...
}
Rectangle {
color: "#999999"
Layout.preferredHeight: 1
Layout.fillWidth: true
visible: (index !== (list.count - 1))
}
}
}
这确保分隔符出现在项目之间,而不是出现在最后一个项目之后。此外,这种方法允许您保持各部分的预期功能。
我刚刚补充:
Text {
text: "____________________________________________"
color: "black"
}
到我的项目的末尾。