Я не очень четко понимаю 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 работает, но все еще хотел бы понять это.