观察这个简单的例子:
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.2
ApplicationWindow {
visible: true
width: 100
height: 100
Label {
text: "foobar"
anchors.bottom: row.top
anchors.left: label1.right
}
RowLayout {
id: row
anchors.bottom: parent.bottom
width: parent.width
Label {
id: label1
text: "hello1"
Layout.alignment: Qt.AlignLeft
}
Label {
id: label2
text: "hello2"
Layout.alignment: Qt.AlignRight
}
}
}
我在行布局中有两个项目,我想将第三个标签锚定到其中一个。这就是我得到的:
我希望foobar更加正确,但这不是我能得到的。
此外,我为此标签设置的任何边距也会被忽略。
我可以锚定到窗口或RowLayout,它会很好地工作,但是由于某些原因,我无法锚定到布局内的项目。是什么原因,什么是合适的解决方案?
答案 0 :(得分:2)
编译程序时,会出现错误:Cannot anchor to an item that isn't a parent or sibling.
这是一个answer,为什么您无法定位。我的解决方法是,将锚定在行的左侧,然后在行内使用 label1 的宽度设置边距。
这是屏幕截图。
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.2
ApplicationWindow {
visible: true
width: 100
height: 100
Label {
color: "#b7087d"
text: "foobar"
anchors.bottom: row.top
anchors.left: row.left
anchors.leftMargin: label1.width
}
RowLayout {
id: row
anchors.bottom: parent.bottom
width: parent.width
Label {
id: label1
color: "#b22424"
text: "hello1"
Layout.alignment: Qt.AlignLeft
}
Label {
id: label2
color: "#1e62ce"
text: "hello2"
Layout.alignment: Qt.AlignRight
}
}
}