1

不确定如何在 QML 的中继器循环中增加“某些东西”:变量、属性。
我宁愿不必将包装器加入到 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.
                    }


                }
            }
        }
4

1 回答 1

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知道它是从哪里来的,它是二维数组还是一维数组元素。其中之一应该工作:

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

或者

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

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

于 2013-11-11T18:10:30.297 回答