2015-06-25 3 views
2

Как я могу получить первые Item/index, которые видны в ListView? Я заглянул в документацию, а также много искал в Интернете, но ничего не нашел. Кто-нибудь знает как это сделать?Как я могу получить первый видимый элемент/индекс из ListView?

Спасибо!

+0

Вы, вероятно, можно использовать 'highlightRangeMode' или' свойства contentY'. Во всяком случае, почему вы хотите это знать? Каков конкретный результат, которого вы хотите достичь? – BaCaRoZzo

+0

Я хочу сохранить представление списка в текущей позиции, даже если модель изменена. Теперь, если моя модель изменена, список перескакивает в начале. –

+0

О, проблема с другого вопроса. Может быть, 'highlightRangeMode' может помочь. – BaCaRoZzo

ответ

0

Сохраните выбранный индекс при его изменении. После изменения модели и индекса становится -1, вы можете использовать positionViewAtIndex для восстановления правильного положения.

Here документация по методу.

В противном случае вы можете сделать то же самое, что и по методу add и remove. Очевидно, что он работает до изменения индекса выбранного элемента. Вы также можете получить индекс видимого элемента с помощью метода indexAt, но я никогда не использовал его раньше, хотя он выглядит прост в использовании.

Итак, у вас есть несколько способов получить индекс видимого элемента, и вы можете сбросить представление с помощью вышеупомянутого метода.

0

Я знаю, что это поздно, но для других ищу помощь:

Вы можете использовать метод члена myView.indexAt(QPoint(0,0)) найти первый индекс.

Я также сделал фрагмент кода, чтобы найти все видимые индексы в представлении, если вам нужно, что тоже: https://gist.github.com/iSplasher/8ebc42eaf9ea206b19bd

2

Вы должны использовать что-то вроде этого:

ListView { 
     id: contacts 
     model: UsersModel 

     onContentYChanged: { 
      var CurrentIndexAtTop = indexAt(1, contentY) 
      var CurrentPropFromModel = UsersModel.get(CurrentIndexAtTop).Name 
     } 
} 

если indexAt возвращение -1 средства не найдены, проверьте это, если нужно! contentY - это свойство ListView, которое возвращает текущую верхнюю Y-координату позиции окна ViewList на гибкую сетку ListView.

обратитесь к документации для получения более подробной информации http://doc.qt.io/qt-5/qml-qtquick-listview.html#indexAt-method

Смежные вопросы