修改 QML ListView 中选择的列表项的文本颜色

问题描述 投票:0回答:1

我正在尝试更新和重置 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 }
    }
}
listview colors qml
1个回答
0
投票

我通过进行以下更改找到了解决方案。

Label {
        id: txtLbl
        text: model.name
        color: root.ListView.isCurrentItem ? "white" : "blue"
    }

感谢大家的宝贵时间。

© www.soinside.com 2019 - 2024. All rights reserved.