Javascript 如何在创建后将项添加到QML网格?

Javascript 如何在创建后将项添加到QML网格?,javascript,qt,qml,Javascript,Qt,Qml,我已经做了一些搜索,但我没有找到一个答案,这个答案一定很简单,到目前为止还没有提出任何问题。 无论如何,我是QML的新手,正在努力寻找一种在创建后动态地将项目添加到网格的方法 基本上,我有一个Flickable,其中有一个网格(默认情况下)包含名为ImageTile的自定义类的四个实例,当MouseArea检测到有一个单击时,它希望将ImageTile的两个实例添加到该网格中 以下是代码片段: Flickable { anchors.fill: parent contentWid

我已经做了一些搜索,但我没有找到一个答案,这个答案一定很简单,到目前为止还没有提出任何问题。 无论如何,我是QML的新手,正在努力寻找一种在创建后动态地将项目添加到网格的方法

基本上,我有一个Flickable,其中有一个网格(默认情况下)包含名为ImageTile的自定义类的四个实例,当MouseArea检测到有一个单击时,它希望将ImageTile的两个实例添加到该网格中

以下是代码片段:

Flickable {
    anchors.fill: parent
    contentWidth: 400
    contentHeight: 800
    clip: true

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onclicked: { /* ADD TWO ImageTile TO imageGrid */ }
    }

    Grid {
        id: imageGrid
        columns: 2
        spacing: 2

        Repeater {
            model: 4
            ImageTile { }
        }
    }
}
如您所见,我想知道应该在onClicked事件中添加什么来实现向imageGrid添加ImageTile的两个新实例


提前感谢您的帮助

多亏了埃里克先生向正确的方向推进,我才解决了这个问题

首先,我必须为中继器指定一个合适的数据模型,然后分配一个委托函数,将数据模型中的信息转换为实际的QML元素。附加到数据模型会自动触发中继器执行委托函数

Flickable {
    anchors.fill: parent
    contentWidth: 400
    contentHeight: 800
    clip: true

    ListModel {
        id: imageModel

        ListElement { _id: "tile0" }
        ListElement { _id: "tile1" }
        ListElement { _id: "tile2" }
        ListElement { _id: "tile3" }
    }

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onclicked: {
            imageModel.append({ _id: "tile" + imageModel.count })
        }
    }

    Grid {
        id: imageGrid
        columns: 2
        spacing: 2

        Repeater {
            model: imageModel
            delegate: ImageTile { id: _id }
        }
    }
}

中继器期望。而使用整数则毫无意义@埃里克先生,哦。我只是对我在Qt官方文档中看到的内容进行了编辑:他们为了演示目的添加了一个愚蠢的黑客。在现实世界中,您的模型将有与其相关的数据(如标题、链接、图像等)。您添加、删除或修改中继器中显示的内容的方式是通过更改模型——这完全遵循了经典的做法,即模型的更改方式取决于您使用的模型。@Ericsir我明白了。问题是,我需要这个网格来包含这些QML对象,因为它们需要交互。不幸的是,我似乎无法将QML对象作为Qt提供的数据模型的属性。创建自定义对象后,我可以选择哪些选项动态填充此网格?