我正在尝试更新和重置 QML ListView 中当前选定列表项的文本颜色,并在当前选定列表项成为 ListView 中的上一个项目时将颜色重置为默认值。
但是所选项目始终以默认颜色可见,无论是当前所选项目还是上一个项目。
下面是我尝试实现相同目标的示例代码,但无法理解出了什么问题。任何帮助将不胜感激
MsgItemDelegate.qml
import QtQuick 2.9
import QtQuick.Controls 2.2
ItemDelegate {
id: root
signal buttonClicked
MouseArea{
anchors.fill: parent
onClicked: {
root.buttonClicked()
}
}
Label {
id: txtLbl
text: model.name
color: lv.isCurrentItem ? "white" : "blue"
}
}
主要.qml
import QtQuick 2.9
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
ListView {
id: lv
anchors.fill: parent
model: ListModel {
ListElement {name: "Hai"}
ListElement {name: "Hai1"}
ListElement {name: "Hai2"}
ListElement {name: "Hai3"}
ListElement {name: "Hai4"}
ListElement {name: "Hai5"}
ListElement {name: "Hai6"}
ListElement {name: "Hai7"}
}
delegate: MsgItemDelegate {
onButtonClicked: {
lv.currentIndex = index
console.error("==============ListView.currentIndex==>", ListView.isCurrentItem)
}
}
highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
}
}
我通过进行以下更改找到了解决方案。
Label {
id: txtLbl
text: model.name
color: root.ListView.isCurrentItem ? "white" : "blue"
}
感谢大家的宝贵时间。