Qt / QML - 定位器属性未附加到模型委托

时间:2018-04-20 00:29:02

标签: qt qml

我在Linux上使用Qt Creator 4.6。我的问题可以简化为基本上是文档中提供的示例的设置,但有一些小的改动:

Dropdown button color issue

如果我运行以下代码,它会绘制一些框,然后单击每个框应该输出其索引。下面的代码正如我所写的那样正常工作。但是,如果我注释掉TEXT 1并取消注释TEXT 2,那么单击每个框的框输出-1。

似乎我必须在MouseArea之前以某种方式使用定位器,否则它将无法正常工作(它可以在Text项中使用,也可以在Rectangle级别使用它)。我猜它有一些东西与MouseArea没有完全解决,直到实际点击,也许如果编译器感觉没有使用定位器它不创建它?

是否预期会出现这种情况,如果是这样,是否记录在案?在我的实际用例中,解决方法是只使用定位器为父级别的未使用的属性或变量分配索引,因此它不是太大的交易,但我想理解它。

Window {
    visible: true
    width: 640
    height: 480

    Grid {
        Repeater {
            model: 16

            Rectangle {
                id: rect
                width: 30; height: 30
                border.width: 1
                //color: Positioner.isFirstItem ? "yellow" : "lightsteelblue"
                color: "green"
                Text {
                    text: rect.Positioner.index  //TEXT 1
                    //text: "test" //TEXT 2
                }

                MouseArea {
                    id: dragArea
                    anchors.fill: parent
                    onPressed: {console.log(rect.Positioner.index)}

                }
            }
        }
    }
}

0 个答案:

没有答案