我对GridView组件有一点问题。我必须在运行时更改某些对象的某些属性。为此,我可以使用setProperty()函数。但是,此功能需要索引才能工作。这里出现问题,所有项目都是在运行时创建的。
如何获取特定项目的索引?
让我再解释一下。我正在努力的项目只是一个带有MouseArea的简单矩形。这是它的代码:
Rectangle {
property var colorR
id: namE
width: 100
height: 100
color: colorR
MouseArea {
id: mouseArea1
anchors.fill: parent
onClicked:
{
console.log(parent.nameIndex)
}
}
}
这是我的GridView代码:
GridView {
id: gridView1
anchors.rightMargin: 5
anchors.leftMargin: 5
anchors.bottomMargin: 5
anchors.topMargin: 10
anchors.fill: parent
flickableDirection: Flickable.VerticalFlick
snapMode: GridView.NoSnap
highlightRangeMode: GridView.NoHighlightRange
highlightMoveDuration: 148
flow: GridView.FlowLeftToRight
layoutDirection: Qt.RightToLeft
model: ListModel {id: listModelMy}
delegate: Column {ColorBlock{}}
cellHeight: 100
cellWidth: 100
}
这是我在GridView中动态创建项目的代码
Rectangle {
id: addButton
width: 65
height: 55
color: "#b04b4b"
border.color: "#252323"
anchors.bottom: parent.bottom
anchors.bottomMargin: 10
anchors.right: parent.right
anchors.rightMargin: 8
Image {
id: image1
anchors.rightMargin: 16
anchors.leftMargin: 16
anchors.bottomMargin: 10
anchors.topMargin: 10
anchors.fill: parent
source: "svgIcons/add.svg"
MouseArea {
id: mouseArea1
anchors.fill: parent
onClicked:
{
var test = listModelMy.append(ListElement);
}
}
}
}
我真的不知道如何获得这个索引。或者我只是失明,我错过了一些明显的东西。
答案 0 :(得分:1)
在委托中可以使用index
附加属性。对于每个委托实例,它将对应于关联的列表模型元素索引。
GridView {
anchors.fill: parent
model: ListModel { id: mod }
delegate: Rectangle {
width: 50
height: 50
color: "red"
Text {
text: index
anchors.centerIn: parent
}
}
}