有没有办法在ListView中的某个事件上隐藏特定项目?
到目前为止,我可以将visible
设置为false
并将height
设置为委托的零。
但是如果我将listView中的间距设置为2,那么看起来这个解决方案已经破了。
答案 0 :(得分:0)
解决这个问题的办法是将ListView
的间距设置为0,并在委托本身中实现。像这样:
ListView{
id: listView
spacing: 0
delegate: Item{
id: itemDelegate
width: parent.width; height: spacingRect.height + actualDelegate.height
Item {id: actualDelegate;} // your actual delegate
Rectangle{ id: spacingRect; height: 2; width: parent.width; color: "transparent"; anchors.top: actualDelegate.bottom}
}
}
这样,当您隐藏委托时,间距也将被隐藏
答案 1 :(得分:0)
我认为正确的方法是使用代理模型来过滤掉不应显示的元素。 您可以使用QSortFilterProxyModel或实现自己的QAbstractProxyModel。 这样甚至可以为元素的删除和添加动画。
或者如果您不想接触C ++并且性能也不成问题,请使用SortFilterProxyModel