Как я могу получить первый Item
/index
, видимый в ListView
? Я просмотрел документацию, а также много искал в Интернете, но ничего не нашел. Кто-нибудь знает как это сделать?
Благодарю вас!
Как я могу получить первый Item
/index
, видимый в ListView
? Я просмотрел документацию, а также много искал в Интернете, но ничего не нашел. Кто-нибудь знает как это сделать?
Благодарю вас!
Вы должны использовать что-то вроде этого:
ListView {
id: contacts
model: UsersModel
onContentYChanged: {
var CurrentIndexAtTop = indexAt(1, contentY)
var CurrentPropFromModel = UsersModel.get(CurrentIndexAtTop).Name
}
}
если indexAt return -1 означает, что не найдено, проверьте это, если нужно! contentY - это свойство ListView, которое возвращает текущую координату верхней Y-координаты окна ViewList в пролистываемой сетке ListView.
см. документацию для более подробной информации http://doc.qt.io/qt-5/qml-qtquick-listview.html#indexAt-method
Я знаю, что уже поздно, но для других, ищущих помощи:
Вы можете использовать метод-член myView.indexAt(QPoint(0,0))
, чтобы найти первый индекс.
Я также сделал фрагмент, чтобы найти все видимые индексы в представлении, если вам это тоже нужно: https://gist.github.com/iSplasher/8ebc42eaf9ea206b19bd
Сохранить выбранный индекс при его изменении. Как только модель изменится и индекс станет -1, вы можете использовать positionViewAtIndex
для восстановления правильного положения.
Здесь документация по методу.
В противном случае вы можете сделать то же самое, полагаясь на метод add
и remove
. Очевидно, это работает до тех пор, пока меняется индекс выбранного элемента. Вы также можете получить индекс видимого элемента с помощью метода indexAt
, но я никогда не использовал его раньше, хотя он выглядит простым в использовании.
Итак, у вас есть несколько способов получить индекс видимого элемента, и вы можете сбросить представление с помощью метода, упомянутого выше.
Основываясь на ответе iSplasher, следующее работает, когда QListView имеет интервал и/или прокручивает по пикселям:
sp = view.spacing()
first = max(view.indexAt(QPoint(sp, 0)), view.indexAt(QPoint(sp, sp * 2)))
highlightRangeMode
илиcontentY
. Впрочем, зачем тебе это знать? Какого конкретного результата вы хотите достичь? - person BaCaRoZzo   schedule 25.06.2015highlightRangeMode
мог бы помочь. - person BaCaRoZzo   schedule 25.06.2015Item
в верхней части списка. Посмотрите, подходит ли подход к вашему варианту использования. - person BaCaRoZzo   schedule 25.06.2015