如何获取ListModel中特定项的索引?

时间:2016-09-02 19:37:21

标签: qt gridview qml

我对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);
            }
        }
    }
}

我真的不知道如何获得这个索引。或者我只是失明,我错过了一些明显的东西。

1 个答案:

答案 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
      }
    }
  }