我在Linux上使用Qt Creator 4.6 . 我的问题可以简化为基本上是文档中提供的示例的设置,但有一些小的更改:
https://doc.qt.io/qt-5/qml-qtquick-positioner.html
如果我运行下面的代码,它会绘制一些框,然后单击每个框应输出其索引 . 下面的代码正如我所写的那样正常工作 . 但是,如果我注释掉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)}
}
}
}
}
}