创建后如何将项目添加到 QML 网格?
How to add items to a QML Grid after creation?
我进行了一些搜索,但未能找到一个答案,这个答案必须非常简单,到目前为止还没有必要提出问题。
无论如何,我是 QML 的新手,并且正在努力寻找一种动态地将项目添加到网格的方法 post-creation.
基本上我有一个 Flickable,里面有一个 Grid(默认情况下)包含四个自定义 class 名为 ImageTile 的实例,当 MouseArea 检测到有点击时,它想添加 2 个 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 事件中放入什么来实现将 ImageTile 的两个新实例添加到 imageGrid。
在此先感谢您的帮助!
感谢 MrEricSir 的正确指导,我已经解决了这个问题。
首先,我必须为 Repeater 指定一个合适的数据模型,然后分配一个委托函数将数据模型中的信息转换为实际的 QML 元素。附加到数据模型会自动触发 Repeater 执行委托函数。
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 }
}
}
}
我进行了一些搜索,但未能找到一个答案,这个答案必须非常简单,到目前为止还没有必要提出问题。 无论如何,我是 QML 的新手,并且正在努力寻找一种动态地将项目添加到网格的方法 post-creation.
基本上我有一个 Flickable,里面有一个 Grid(默认情况下)包含四个自定义 class 名为 ImageTile 的实例,当 MouseArea 检测到有点击时,它想添加 2 个 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 事件中放入什么来实现将 ImageTile 的两个新实例添加到 imageGrid。
在此先感谢您的帮助!
感谢 MrEricSir 的正确指导,我已经解决了这个问题。
首先,我必须为 Repeater 指定一个合适的数据模型,然后分配一个委托函数将数据模型中的信息转换为实际的 QML 元素。附加到数据模型会自动触发 Repeater 执行委托函数。
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 }
}
}
}