是否有可能从内部QML转发器到达外部QML转发器的索引(它们是嵌套的)?

时间:2016-08-08 11:44:52

标签: c++ nested qml repeater qtquick2

我正在尝试在我的QML应用程序中动态构建相同类型项目的矩阵并使其保持动态,以便您可以随时更改c ++文件中的行数和列数。这一直运行良好,但现在,为了单独访问它们,我想给它们动态名称。因此,我嵌套了两个转发器并尝试设置objectName,如下所示:

    Repeater{
        id: rows
        model: Matrix1.row //number of rows in Matrix1-Object

        Repeater{
            id: columns
            model: Matrix1.column //number of columns in Matrix1-Object

            RepeatedItem{
                objectName: (index) +"."+ (rows.index) //matrix elements are 
                supposed to be numbered x.y because of the nested repeaters, e.g. 
                0.0 for the first element
            }
        }
    }

不幸的是,我似乎无法访问外部索引。 显示第一个值,第二个值由GUI的TextArea中的String undefined 表示。 如果我向外部Repeater添加一个新属性并将其设置为与index相同的值,它将被设置一次并保留每个重复行的第一个值(0)。

以某种方式动态达到这个外部指数值是不可能的吗? 或者有没有人知道一种更好的方法来动态创建QML中可以单独访问的二维项目数组?

2 个答案:

答案 0 :(得分:4)

index属性是一个上下文属性。您可以将其存储到普通属性,以便可以从其他上下文访问它:

Repeater {
    id: rows
    // ...
    Repeater {
        id: columns
        property int outerIndex: index
        // ...
        Text {
            text: index + "." + columns.outerIndex
        }
    }
}

答案 1 :(得分:0)

就我个人而言,我只使用一个具有以下模型属性的Repeater解决了它:Matrix1.column * Matrix1.row。此外,我意识到,为了我的目的,只需使用% - 和/ - 运算符,行号,列号和最近访问的索引来计算被点击元素的行和列。