单击鼠标突出显示 QML ListView 项目
highlight QML ListView Item on mouse click
我注意到列表视图默认会突出显示第一项 automatically/by 如何禁用它并仅突出显示我在鼠标单击时选择的项目?
Component {
id: highlight
Rectangle {
width: 180; height: 40
color: "lightsteelblue"; radius: 5
y: list.currentItem.y
Behavior on y {
SpringAnimation {
spring: 3
damping: 0.2
}
}
}
}
ListView {
id: list
width: 180; height: 200
model: ContactModel {}
delegate: Text {
text: name
MouseArea{
anchors.fill: parent
onClicked: {
list.currentIndex = index
}
}
}
highlight: highlight
highlightFollowsCurrentItem: false
focus: true
}
我已经完成了鼠标部分,但我仍然无法在添加项目时禁用突出显示。
默认情况下,currentIndex
设置为 0
,这就是第一个项目总是开始突出显示的原因。您可以通过简单地将 currentIndex
初始化为 -1 来关闭它。
ListView {
currentIndex: -1
...
}
好的,经过几个小时的搜索,我已经使用了 onCountChanged
信号
指示添加到列表中的项目然后将 ListView
currentIndex
休息到 -1
所以代码将像这样
onCountChanged: {
list.currentIndex = -1
}
我注意到列表视图默认会突出显示第一项 automatically/by 如何禁用它并仅突出显示我在鼠标单击时选择的项目?
Component {
id: highlight
Rectangle {
width: 180; height: 40
color: "lightsteelblue"; radius: 5
y: list.currentItem.y
Behavior on y {
SpringAnimation {
spring: 3
damping: 0.2
}
}
}
}
ListView {
id: list
width: 180; height: 200
model: ContactModel {}
delegate: Text {
text: name
MouseArea{
anchors.fill: parent
onClicked: {
list.currentIndex = index
}
}
}
highlight: highlight
highlightFollowsCurrentItem: false
focus: true
}
我已经完成了鼠标部分,但我仍然无法在添加项目时禁用突出显示。
默认情况下,currentIndex
设置为 0
,这就是第一个项目总是开始突出显示的原因。您可以通过简单地将 currentIndex
初始化为 -1 来关闭它。
ListView {
currentIndex: -1
...
}
好的,经过几个小时的搜索,我已经使用了 onCountChanged
信号
指示添加到列表中的项目然后将 ListView
currentIndex
休息到 -1
所以代码将像这样
onCountChanged: {
list.currentIndex = -1
}