如何在ListView的项目之间设置自定义分隔符

问题描述 投票:0回答:3

有没有办法使用自定义委托作为

ListView
的每两个连续项之间的分隔符,就像
header
footer
属性一样?

qt qml qt5 qtquick2
3个回答
4
投票

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
    }

4
投票

将您的项目放入带有上面这样的矩形的 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))
        }
    }
}

这确保分隔符出现在项目之间,而不是出现在最后一个项目之后。此外,这种方法允许您保持各部分的预期功能。


0
投票

我刚刚补充:

Text {
    text: "____________________________________________"
    color: "black"
}

到我的项目的末尾。

© www.soinside.com 2019 - 2024. All rights reserved.