我有以下水平列表:
BulletsListDelegate.qml
import QtQuick 2.0
Rectangle {
width: 8
height: 8
color: "#808080"
radius: width * 0.5
}
main.qml
import QtQuick 2.0
Item {
width: 256
height: 256
ListModel {
id: bulletsListModel
ListElement {
a: 'example'
}
ListElement {
a: 'example'
}
...
}
ListView {
id: bulletsList
spacing: 8
orientation: ListView.Horizontal
delegate: BulletsListDelegate {}
model: bulletsListModel
anchors.bottom: parent.bottom
width: parent.width
}
}
元素如下所示(它们是灰色的项目符号)
我希望它们显示在它们上方黑框(其父框)的水平中心。
是否有任何形式的集中或合理化列表中的项目?
最佳答案
所以,如果我正确理解你的问题,你希望在 ListView 中对齐项目的实例。使用ListView,这并不是那么容易实现的。如果项目数量不均匀,则可以使用preferredHighlightBegin 和preferredHighlightEnd 在ListView 中心设置一个项目大小的区域,然后将hightlightRangeMode 设置为ListView.StrictlyEnforceRange。您可以将 currentIndex 设置为指向索引,以便中间项将被视为当前项。这会将其置于您定义的范围内,因此位于中心。但是,当您拥有偶数个项目时,这不起作用,因此这是一种值(value)有限的黑客。
我的问题是:项目必须使用ListView来定位吗?看来您实际上根本不需要 ListView 的太多功能?如果您不需要 ListView 的其他功能(例如滚动),则可以使用 Repeater 代替。这允许您简单地将项目放入行定位器中,您可以将其宽度设置为 count*(delegateWidth+spacing)-spacing,高度等于您的委托(delegate)高度。然后,您可以使用 acnhors 将行定位到您喜欢的任何位置的中心。
关于qt - 如何在 QtQuick 中对齐 ListView 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58652338/