如何在QML中手动填充ListView?

时间:2016-04-14 09:27:18

标签: qt qml qlistview

我有一个Listview,它将保存材料清单。我的元素是文字和图像。文本包含材质名称,图像是删除按钮。当我单击添加按钮时,我想将我的元素添加到列表视图中。然后,如果我单击删除按钮,我想从Listview中删除记录。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我想你的代码中有一个ListModelListModel提供了一些methods来插入和删除项目。

您提到您的ListElement包含文字和删除图片。所以我认为你有类似下面的代码,在那里你可以看到一个附加和删除元素的例子。

import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 500
    height: 500

    Rectangle {
        width: 250
        height: 400


        Component {
            id: listDelegate

            Item {
                width: 250; height: 50

                Row {
                    Column {
                        width: 200
                        Text { text: 'mytext: ' + mytext }
                    }
                    Column {
                        width: 50
                        Image {
                            id: deleteButton
                            source: "delete.jpg"
                            MouseArea {
                                anchors.fill: parent;

                                onClicked:{
                                    console.debug("clicked:"+ index);
                                    listModel.remove(index);
                                }
                            }
                        }
                    }
                }
            }
        }

        ListModel {
            id: listModel

            ListElement {
                mytext: "AAA"
            }
            ListElement {
                mytext: "BBB"
            }
        }

        ListView {
            id: listView
            anchors.fill: parent
            model: listModel
            delegate: listDelegate
            focus: true
        }
    }

    Button {
        y: 450
        text: "add"

        onClicked: {
            listModel.append({"mytext": "XXX"})
        }
    }
}