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