Qt 如何确定当前项是否是ListView节中的最后一项

Qt 如何确定当前项是否是ListView节中的最后一项,qt,qml,qabstractlistmodel,Qt,Qml,Qabstractlistmodel,因此,当我绘制ListView项目时,我会将它们分为多个部分。节中的每个项都有一行作为下一项的分隔符。对于最后一项,我不想画这个分隔符。如何确定正在绘制的当前项是否是该部分的最后一项(不在列表视图中)?似乎无法确定。然而,可能以不同的方式实现相同的结果。每个项目都有一行将其与下一个项目分隔开,而不是有一行将其与上一个项目分隔开,而是在节委托中也有该行,并且不要为索引===0的项目绘制它,因此显然列表视图具有名为节的附加属性,上一节,下一节。有了这些,很容易发现下一节或上一节是否与当前节相同。如果

因此,当我绘制
ListView
项目时,我会将它们分为多个部分。节中的每个项都有一行作为下一项的分隔符。对于最后一项,我不想画这个分隔符。如何确定正在绘制的当前项是否是该部分的最后一项(不在
列表视图中)?

似乎无法确定。然而,可能以不同的方式实现相同的结果。每个项目都有一行将其与下一个项目分隔开,而不是有一行将其与上一个项目分隔开,而是在节委托中也有该行,并且不要为
索引===0的项目绘制它,因此显然
列表视图
具有名为
的附加属性,
上一节
下一节
。有了这些,很容易发现下一节或上一节是否与当前节相同。如果不相同,则表示它是该部分中的最后一个项目。

每个学员项目都知道自己的索引,因此可以将其与
列表视图
项目计数进行比较:

ListView {
    id: theListView
    model: ...
    delegate: Item {
        property bool isLast: index+1 < theListView.count ? false : true
        ...
    }
}
ListView{
id:theListView
型号:。。。
代表:议程项目{
属性bool isLast:index+1
如果模型是静态而非动态的,则index==0显示模型的第一个(实际上是最新的)项。这意味着,如果您的listView不时使用新项目进行更新,则当新列表项目到达时,index==0将绑定到不同的元素。

Hi,感谢您的建议。不幸的是,在这种情况下,我的第二节(等等)下面会有一行,因为
索引在每个节后不会变为0。@Silex-您可以扩展节委托,使其与下面的项目重叠并隐藏该行。这肯定比使用ListViewsYa的listview手动实现部分更容易,我们正在考虑这样的事情……我想试试,但听起来有点难看的解决方案。:)我的第一个想法是使用页脚隐藏最后一行,方法是修改其z值以覆盖最后一项,唉,页脚将不会在最后一项之后实例化,而是占据视图本身的末尾,因此如果视图内容高于视图本身,它将不起作用。因此,将线移动到顶部并使用截面代理将其隐藏是唯一简单的解决方案。是的,这是丑陋的,但QML的组件设计往往不适合每一个需要,所以它要么是丑陋的修复,要么是冗长的重新实现,你挑吧。你的建议,掩盖它实际上相当不错,所以现在我要去它,再次感谢!