Есть ListView. В нем есть много айтемов. Хочу сделать чтобы при клике мыши на элемент списка он становился активным (т.е. списку установить текущий индекс на индекс "кликнутого" айтема). Вопрос: как определить индекс айтема, по которому кликнул пользователь? Вот я пробовал так:
ListView {
..........
MouseArea {
anchors.fill: parent
onEntered: parent.focus = true
onClicked: {
var currentIdx = parent.indexAt(mouseX, mouseY);
if (currentIdx != -1) parent.currentIndex = currentIdx
}
}
}
Но это работает, если элементы списка не "прокручены". Т.е. если айтемы помещаются в сам список так, чтобы для получения доступа к последним айтемам не нужно было проскроллить этот список - то так работает.. А иначе не работает, потому что реальное положение айтема в списке будет определяться offsetY + mouseY. А как получить этот offsetY (смещение прокрутки по вертикали) непонятно.... Или можно как-то по-другому решить проблему?
Спасибо!