在GridView中的委托顶部绘制突出显示组件

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

我试图强制将突出显示的项目绘制到GridView中当前选定的项目上,但没有成功。这是我的QML:

import QtQuick 2.0

GridView {
    id: gridView
    width: 140
    height: 140
    cellHeight: 70
    cellWidth: 70

    highlight: Rectangle {
        color: "red"
        z: 1
    }

    delegate: Item {
        id: itemId

        width:  GridView.view.cellWidth
        height: GridView.view.cellHeight

        Text {
            id: textId
            text: "1234"
        }

        MouseArea {
            anchors.fill: parent
            onClicked: itemId.GridView.view.currentIndex = index
        }
    }

    model: 100
}

我希望将高光部分的z设置为1可以完成这项工作,但是效果不理想。如果选择打开窗口后立即显示的项目,则突出显示会覆盖它们,但是当我开始滚动并选择下面的项目时,突出显示不再位于顶部。我该如何解决?

qt qml qt5 qtquick2
1个回答
0
投票

z委托中的GridView的默认值为1(link)。不知道为什么在可以设置除0之外的任何其他值的情况下都无法指定属性z: 0(然后总是返回默认值)。但是您可以在Highlight属性中指定z: 2或将默认值z覆盖为委托的onCompleted处理程序中为0:

Component.onCompleted: {
    z = 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.