QML ListView: как отключить автопрокрутку при вставке новых элементов?

Кто-нибудь знает, как предотвратить прокрутку QML ListView, когда я добавляю некоторые элементы в его заголовок? Я хочу обновить ListView в стиле Twitter, когда он всегда сохраняет свою позицию и возможен только явный щелчок.


person Pavel Osipov    schedule 23.11.2011    source источник


Ответы (2)


Вы можете использовать свойство currentItem или currentIndex ListView, чтобы выделить только что добавленный элемент или любой элемент, который вы хотите выделить.

person RajaRaviVarma    schedule 24.11.2011
comment
не хочу выделять. Я хочу вставлять новые элементы поверх текущего элемента без прокрутки. - person Pavel Osipov; 25.11.2011

На самом деле функция insert выполнила свою работу. Вы можете вставить его вверху или в любом другом месте, например modelName.insert(0,{object});. Рабочий пример здесь.

import QtQuick 1.0

Rectangle {
    id: rectangle1
    width: 320
    height: 480

    ListModel {
        id: cModel
        ListElement {
            name: "Bill Smith"
            number: "555 3264"
        }
        ListElement {
            name: "John Brown"
            number: "555 8426"
        }
        ListElement {
            name: "Sam Wise"
            number: "555 0473"
        }
    }
    ListView {
        id: list_view1
        width: rectangle1.width
        height: rectangle1.height - 40
        anchors.horizontalCenter: parent.horizontalCenter
        delegate: Text {
            text: name + ": " + number
        }
        model: cModel
    }

    Rectangle {
            id: rectangle2
            width: 320
            height: 40
            color: "#ffffff"
            anchors.top: list_view1.bottom

            Text {
                id: text1
                text: qsTr("Click to add!")
                anchors.horizontalCenter: parent.horizontalCenter
                anchors.verticalCenter: parent.verticalCenter
                font.pixelSize: 16
                MouseArea {
                    id: mouse_area1
                    anchors.fill: parent
                    onClicked: addNewItemTop();
                }
            }
        }

    function addNewItemTop()
    {   var i = Math.random();
        cModel.insert(0,{"name" : "New Number", "number":i.toString()});
    }
    }
person RajaRaviVarma    schedule 09.12.2011