在循环中递增属性变量

时间:2013-11-08 21:40:57

标签: qt qml

不确定如何在QML中的Repeater循环中增加“某些东西”:变量,属性 我宁愿不要将包装器包含在cpp函数中。

property int bs: 0
Repeater {
    model:  12

    bs: {
        var vbs = bs + 1; //this works
        vbs;  
    }//ERROR:  Cannot assign to non-existent property bs
}

    Repeater{
        model: 7

        Row {
            spacing: table.rowSpacing

            DiagValue{
                value: {trans("sw " + (index + 1))}
                width: 60
            }

            Repeater{
                model:  12

                CheckBox {
                    id:myCheckbox
                    width: 50
                    height: 50
                    backingVisible: false
                    checkable: true

                    onClicked:{
                        matrix[i_index? ][j_index? ] = myCheckbox.checked   //how to do this assignement??

                        //pass the matrix to a cpp wrapper.
                    }
 OR
                    onClicked:{
                        matrix[i] = myCheckbox.checked   //how to do this assignement??
                        i++;//??

                        //pass the matrix to a cpp wrapper.
                    }


                }
            }
        }

1 个答案:

答案 0 :(得分:1)

您正尝试同时使用两个转发器的index属性。我会做这样的事情:

Column {
    Repeater{
        model: 7

        Row {
            id: currentRow
            // Store the index of the current row based on the
            // index in the first Repeater
            property int rowIndex: index
            spacing: 10
            Repeater{
                id: repeaterColumns
                model:  5

                CheckBox {
                    id:myCheckbox
                    width: 50
                    height: 50
                    // currentRow.rowIndex is the line index
                    // index is the column index
                    text: "Line " + currentRow.rowIndex + " col " + index
                }
            }
        }
    }
}

我真的没有matrix来自哪里,如果它是2D数组或1D数组元素。其中一个应该有效:

onClicked:{
    matrix[currentRow.rowIndex][index] = myCheckbox.checked
}

onClicked:{
    matrix[currentRow.rowIndex * repeaterColumns.count + index] = myCheckbox.checked
}

这里的想法不是尝试自己增加任何东西,而是依赖于元素的正确index属性。