Как остановить ListView для «прыжка» при смене модели

Что я должен сделать: Мне нужно создатьокно чата используяListView в QML, где хранятся сообщения чата. Я поставилlistView.positionViewAtEnd() чтобы следить за последними сообщениями. Я отключаюpositionViewAtEnd когда я прокручиваю вверх так, что я могу читать прошлые сообщения, не прыгая в конце, каждый раз, когда я получаю новое сообщение.

Эта проблема: После прокрутки вверх, каждый разЯ получаю новое сообщение, что он прыгает в начале списка. Чтобы решить, что мне удаетсяхранитьcontentY списка и сбрасывать его каждый разonCountChanged обработчик называется (см. код ниже):

ListView {
    id: messagesList
    model: contact? contact.messages: []
    delegate: delegate
    anchors.fill: parent
    anchors.bottomMargin: 20
    height: parent.height
    anchors.margins: 10

    property int currentContentY

    onMovementEnded: {
       currentContentY = contentY
    }

    onCountChanged: {
        contentY = currentContentY
    }
    onContentYChanged: {
        console.log(".....contentY: " + contentY)
    }
}   

Проблема в том, что, хотя я установил последнийcontentY До смены моделисписок все еще немного прыгает (несколько пикселей, а не в конце или начале) иэто не всегда прыгает, И когда я иду на вершину списка и печатаюcontentY Я получаю отрицательные значения, Теоретически,contentY в начале списка должно быть0.

Может кто-нибудь сказать мне, что идет не так? Или, может быть, предложить другое решение для создания моего списка сообщений?

Чем ты заранее! :)

Ответы на вопрос(2)

Ваш ответ на вопрос