我正在尝试在我的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中可以单独访问的二维项目数组?
答案 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。此外,我意识到,为了我的目的,只需使用% - 和/ - 运算符,行号,列号和最近访问的索引来计算被点击元素的行和列。