Qt 滚动后标题覆盖的ListView项
我正在尝试使用一个列表视图,它有一个位于列表顶部的简单标题。它在大多数情况下都能正常工作。当我手动滚动到顶部时,顶部项目位于标题下方: 当我从列表外部设置当前索引以突出显示某个项目时,列表将滚动到突出显示的项目。这是预期和期望的行为。但是,列表会以某种方式滚动,突出显示的项目将与标题处于相同的高度(y)。因此,标题部分覆盖了该项。在图片中,标题是透明的,突出显示为浅绿色: 如何设置列表,使列表内容始终从标题下方开始?或者,作为一种解决方法,在选择自动滚动后,如何设置当前项目的高度? 为了完整起见,这里是我列表的当前代码Qt 滚动后标题覆盖的ListView项,qt,qml,qt5,qtquick2,Qt,Qml,Qt5,Qtquick2,我正在尝试使用一个列表视图,它有一个位于列表顶部的简单标题。它在大多数情况下都能正常工作。当我手动滚动到顶部时,顶部项目位于标题下方: 当我从列表外部设置当前索引以突出显示某个项目时,列表将滚动到突出显示的项目。这是预期和期望的行为。但是,列表会以某种方式滚动,突出显示的项目将与标题处于相同的高度(y)。因此,标题部分覆盖了该项。在图片中,标题是透明的,突出显示为浅绿色: 如何设置列表,使列表内容始终从标题下方开始?或者,作为一种解决方法,在选择自动滚动后,如何设置当前项目的高度? 为了完整
ListView {
id: particleList
anchors.fill: parent
model: particleModel
clip: true
highlight: Rectangle { color: Material.color(Material.Green); opacity: 0.2}
highlightMoveDuration: Style.animationDurationMedium
headerPositioning: ListView.OverlayHeader
header: Item {
height: 40
anchors.left: parent.left
anchors.right: parent.right
Row {
anchors.fill: parent
MediumText {
horizontalAlignment: Text.AlignHCenter
width: parent.width / 3
text: qsTr("Width")
}
MediumText {
horizontalAlignment: Text.AlignHCenter
width: parent.width / 3
text: qsTr("Height")
}
MediumText {
horizontalAlignment: Text.AlignHCenter
width: parent.width / 3
text: qsTr("Area")
}
}
}
footer: SmallText {
anchors.left: parent.left
anchors.right: parent.right
text: particleModel.count
}
populate: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
delegate: Item {
height: 40
anchors.left: parent.left
anchors.right: parent.right
Row {
anchors.fill: parent
MediumText {
anchors.verticalCenter: parent.verticalCenter
width: parent.width / 3
text: model.width
horizontalAlignment: Text.AlignRight
rightPadding: 20
}
MediumText {
anchors.verticalCenter: parent.verticalCenter
width: parent.width / 3
text: model.height
horizontalAlignment: Text.AlignRight
rightPadding: 20
}
MediumText {
anchors.verticalCenter: parent.verticalCenter
width: parent.width / 3
text: model.area
horizontalAlignment: Text.AlignRight
rightPadding: 20
}
}
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: 1
visible: model.index !== 0
color: Material.color(Material.Grey)
}
}
}
Listview行始终滚动到标题后面。 因此,将其设置为不透明(例如,带有背景的矩形而不是项目),并增加z值使其位于顶部。
对于滚动使用,请选择preferredHighlightBegin和PreferredHighlighted。请提供。如果有人想测试,您的代码示例现在无法运行。请尝试获取一个使用ListView和header的非常简单的示例,以检查它是否是Qt错误。谢谢,highlightRangeMode是我错过的,它与首选的HighlightBegin和End组合在一起,范围在中间高度。我将
preferredHighlightBegin:listView.height/3
和preferredhighlighted:2*listView.height/3
设置为使其居中。