QML mapToItem с ListViews, получить элемент делегата с childAt - PullRequest
0 голосов
/ 08 марта 2020

Я не очень четко понимаю childAt, согласно документации mapToItem дает относительные координаты для элемента в наемной иерархии SceneGraph, а childAt возвращает элемент по его относительным координатам.

Просто опробую эту концепцию, чтобы получить выделенный в данный момент элемент в ListView. Я знаю, что currentItem / activeFocusedItem уже предоставляет это, но я использую эту концепцию для извлечения элементов из синхронизированных списков ListView

Keys.onSpacePressed: {
        console.log("elist                  :", eList)
        console.log("curr                   :", currentItem)
        console.log("curr.parent            :", currentItem.parent, "??")
        console.log("curr.parent.parent     :", currentItem.parent.parent, "why is current.parent not elist ?")
        var xy = currentItem.mapToItem(eList, currentItem.x, currentItem.y)
        if (xy) {
            console.log("childA", eList.childAt(xy.x, xy.y), "!=", currentItem)
        }
    }

Я ожидаю, что childA будет currentItem

QML debugging is enabled. Only use this in a safe environment.
qml: elist                  : QQuickListView(0x559a603038c0, "elist")
qml: curr                   : QQuickRectangle(0x559a601589e0, "1")
qml: curr.parent            : QQuickItem(0x559a5fff79c0) ??
qml: curr.parent.parent     : QQuickListView(0x559a603038c0, "elist") why is current.parent not elist ?
qml: childA QQuickItem(0x559a5fff79c0) != QQuickRectangle(0x559a601589e0, "1")

Полный код доступен здесь

РЕДАКТИРОВАТЬ Я нашел itemAt работает, но все еще хотел бы понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...