QML ListView:如何在插入新元素时禁用自动滚动?

时间:2011-11-23 08:58:37

标签: qt qml

有没有人知道,当我将一些元素添加到其头部时,如何防止向下滚动QML ListView?我希望以类似Twitter的方式更新ListView,当它始终保持其位置并且只能进行明确的轻弹时。

2 个答案:

答案 0 :(得分:0)

您可以使用ListView的currentItemcurrentIndex属性突出显示新添加的项目或要突出显示的任何项目。

答案 1 :(得分:0)

实际上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()});
    }
    }