我正在尝试将Rectangle
的大小调整为其内容的大小:
ListView {
anchors.fill: parent
model: ["a", "b", "c"]
delegate: Rectangle {
color: "gray"
property int margin: 20
width: childrenRect.width + 2 * margin
height: childrenRect.height + 2 * margin
Text {
text: modelData
anchors.centerIn: parent
}
}
}
这似乎在视觉上可行,但是QML引擎给出了很多这样的错误:
qrc:/main.qml:13:19:QML矩形:检测到属性“宽度”的绑定环
qrc:/main.qml:13:19:QML矩形:检测到属性“ height”的绑定环
绑定循环在哪里以及如何解决?
答案 0 :(得分:0)
错误来自项目Rectangle
,您在其中要求容器具有其内容的大小(通过使用childrenRect
)。但是,您的Text
会根据其父项的大小进行调整。
它应该定义Rectangle
维度(具有锚点或固定大小),并根据父维度计算子维度。
答案 1 :(得分:0)
通常不会将delegate
的宽度绑定到其内容(childrenRect
)。在大多数情况下,您需要parent
的{{1}}并固定(或在极少数情况下是动态的)width
。查看this示例-我使用height
来调整宽度并固定anchors
为80:
height
您可能还对anchors {
left: parent.left
right: parent.right
}
height: 80
在此组件内部的位置感兴趣。