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