qt - How to stop ListView for "jumping" when model is changed -
what need do: need create chat window using listview in qml stores chat-messages. set listview.positionviewatend() in order follow last messages. disable positionviewatend when scroll upwards such can read past messages without jumping @ end every time receive new message.
the problem: after scrolling up, every time i receive new message jumps @ beginning of list. solve manage store contenty of list , reset every time oncountchanged handler called (see code below):
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) } } the problem though set last contenty had, before model changed, list still jumps bit (several pixels, not @ end or beginning) , it doesn't jump always. , when go top of list , print contenty negative values. theoretically, contenty @ beginning of list should 0.
can tell me going wrong? or maybe suggest solution create message list?
than in advance! :)
why not use oncountchanged slot in order set listview @ end ?
oncountchanged: { messageslist.positionviewatend() }
Comments
Post a Comment