有没有可能从内部的QML Repeater中访问外部Repeater的索引值(它们是嵌套的)?

8

我正在尝试在我的QML应用程序中动态构建一个相同类型的矩阵,并保持其动态性,以便您可以随时更改c++文件中的行数和列数。这一直很有效,但现在为了单独访问它们,我想给它们动态命名。因此,我嵌套两个重复器,并尝试设置对象名称如下:

    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文本区域中用字符串undefined表示。 如果我给外部Repeater添加一个新属性,并将它设置为与索引相同的值,则该值将被设置一次,并对每个重复行保留第一个值(0)。

有没有办法以动态方式达到这个外部索引值呢? 还是有人知道以更好的方式在QML中动态创建可单独访问的二维数组项吗?

2个回答

8
< p > index 属性是一个上下文属性。您可以将其存储到普通属性中,以便从另一个上下文访问:

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

2
我尝试过了,columns.outerIndex 不包含当前索引。 - Powkachu

0

我个人通过使用一个Repeater及以下模型属性成功地解决了该问题:Matrix1.column * Matrix1.row。此外,我意识到,对于我的目的,在计算所点击元素的行和列时,仅使用%-和/-运算符、行号、列号和最近访问的索引即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接