QML ListVIew 项目位置

QML ListVIew Item Pos

ListView有20个item,鼠标点击得到第十个item X pos.

但是 positionViewAtIndex 函数也会移动项目。

有没有办法在没有 positionViewAtIndex 的情况下获取项目 X pos?

这是示例。

Window {
    id: frame
    width: 640
    height: 480
    visible: true

    MouseArea{
        anchors.fill: parent
        onClicked: {
            listView.positionViewAtIndex(10, ListView.SnapPosition);
            var destPos = listView.contentX;
            console.log("item10 x: " + destPos)
        }
    }

    Rectangle {
        width: 480
        height: 80

        color: "white"

        ListView {
            id:listView
            anchors.fill: parent
            anchors.margins: 20
            clip: true
            model: 20
            orientation: ListView.Horizontal
            delegate:
                Rectangle {
                width: 40
                height: 40
                color: "green"
                Text {
                    anchors.centerIn: parent
                    text: index
                }
            }
            spacing: 5
        }
    }
}

使用这种方式获取位置,但如果想要中心位置,则需要更多计算。

MouseArea{
    anchors.fill: parent
    onClicked: {
        var destPos = listView.itemAtIndex(10).x
        console.log("item10 x: " + destPos)
        listView.contentX = destPos
    }
}