ListView项目不会突出显示

时间:2014-03-26 17:19:01

标签: qt qml qt-quick

以下是代码:

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Window 2.1
import QtGraphicalEffects 1.0
import QtQuick.Layouts 1.1

Window {
    id: window

    /* Interface */
        Rectangle {
            id: dataView

            anchors.topMargin: 10
            height: 30 * model.count
            width: 600

            radius: 5
            border.color: "#333"
            border.width: 1

            color: "black"
            opacity: 0.6

            clip: true

            ListView {
                anchors.fill: parent
                anchors.topMargin: 7
                model: model
                delegate: delegate

                interactive: false

                spacing: 6

                highlight: Rectangle {
                    color: "#333"
                    border.width: 1
                    border.color: "red"
                }

                onHighlightItemChanged: {
                    console.debug(1);
                }
            }

        }

    /* Model */
        ListModel {
            id: model

            ListElement {
                name: "Google Chrome"
                icon: ""
            }
            ListElement {
                name: "Google Chrome"
                icon: ""
            }
            ListElement {
                name: "Google Chrome"
                icon: ""
            }
        }

        Component {
            id: delegate
            Rectangle {
                id: wrapper
                height: 24
                anchors.topMargin: 7
                anchors.bottomMargin: 7

                Row {
                    anchors.fill: parent
                    spacing: 0

                    Image {
                        id: delegateIcon

                        fillMode: Image.Stretch
                        source: icon
                        width: 24
                        height: 24
                    }

                    Text {
                        text: name
                        font.pixelSize: 12
                        font.family: "Segoe UI"
                        color: "#fff"
                    }
                }
            }
        }

}

问题在标题中描述:当我用鼠标悬停项目时,没有任何反应。此外,onHighlightItemChanged仅在应用程序开始时发出。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

1)您需要向代理

添加width
id: wrapper
height: 24

变为

id: wrapper
height: 24
width: parent.width // or 100

2)您需要通过添加此

来触发“click - > item changed”操作
MouseArea {
    anchors.fill: parent
    z: 1
    onClicked:
    {
       list.currentIndex = index
    }
}
代理人Row { }

下的

注意:onHighlightItemChanged:没有按照您的想法进行操作(它会检查委托组件是否已更改,就像您有2个可能的委托一样)。这样更好:

onCurrentIndexChanged: {
    console.debug("New index : "+ currentIndex);
}