如何根据其他项目的值设置QML项目的宽度' anchors.left和anchors.right?这是我想要做的一个例子:
Rectangle {
width: 400
height: 400
Rectangle {
width: parent.right - parent.left
height: parent.height
}
}
显然,这只是一个简单的例子,因为我可以使用width: parent.width
,但这不会起作用。例如,如果两个锚点位于不同的项目上:
Rectangle {
width: 400
height: 400
Rectangle {
anchors.left: parent.left
width: other.left - parent.left
height: parent.height
}
Rectangle {
id: other
anchors.right: parent.right
width: 123
height: parent.height
}
}
答案 0 :(得分:0)
我找到了一个解决方案,虽然它有点乱。对于以下不起作用的代码:
Rectangle {
width: 400
height: 400
Rectangle {
id: other1
anchors.left: parent.left
width: 43
height: parent.height
}
Rectangle {
anchors.left: other1.right
width: other2.left - other1.right
height: parent.height
}
Rectangle {
id: other2
anchors.right: parent.right
width: 123
height: parent.height
}
}
将other1.right
替换为other1.x + other1.width
,将other2.left
替换为other2.x
,这样就可以了:
Rectangle {
width: 400
height: 400
Rectangle {
id: other1
anchors.left: parent.left
width: 43
height: parent.height
}
Rectangle {
anchors.left: other1.right
width: other2.x - (other1.x + other1.width)
height: parent.height
}
Rectangle {
id: other2
anchors.right: parent.right
width: 123
height: parent.height
}
}
答案 1 :(得分:0)
您正在为一个简单的问题添加不必要的复杂性。
只要您想将项目锚定到其兄弟姐妹或直接父母,您就不需要手动计算项目的宽度。
只需将左侧和右侧值固定:
Rectangle {
width: 400
height: 400
Rectangle {
id: other1
anchors.left: parent.left
width: 43
height: parent.height
}
Rectangle {
anchors.left: other1.right
anchors.right: other2.left
// width: other2.x - (other1.x + other1.width) // absolutely not necessary
height: parent.height
}
Rectangle {
id: other2
anchors.right: parent.right
width: 123
height: parent.height
}
}