如何在QML中将RowLayout正确拆分为两个相等的字段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在QML中将RowLayout正确拆分为两个相等的字段?相关的知识,希望对你有一定的参考价值。
这是一个简单的例子:
RowLayout {
spacing: 5
ColumnLayout {
Text {
Layout.fillWidth: true
text: qsTr("Some text")
}
Rectangle {
Layout.fillWidth: true
height: 100
color: "red"
}
}
ColumnLayout {
Text {
Layout.fillWidth: true
text: qsTr("Some more text")
}
Rectangle {
Layout.fillWidth: true
height: 50
color: "red"
}
}
}
这将在width
的RowLayout
产生两个相等的字段,但为什么我必须为所有孩子指定Layout.fillWidth: true
?
以下是从Layout.fillWidth: true
组件中删除Text
的相同示例:
RowLayout {
spacing: 5
ColumnLayout {
Text {
text: qsTr("Some text")
}
Rectangle {
Layout.fillWidth: true
height: 100
color: "red"
}
}
ColumnLayout {
Text {
text: qsTr("Some more text")
}
Rectangle {
Layout.fillWidth: true
height: 50
color: "red"
}
}
}
这里RowLayout
的两个领域在width
不会相同。
答案
您可以使用Layout.preferredWidth
来设置行元素的大小(绝对或相对):
RowLayout {
anchors.fill: parent
spacing: 0
Rectangle {
Layout.preferredWidth: parent.width / 2
Layout.fillHeight: true
color: "green"
}
Rectangle {
Layout.fillWidth: true
Layout.fillHeight: true
color: "yellow"
}
}
另一答案
使用具有两列的GridLayout可能更好。
Rectangle {
height: 20
width: 300
color: "green"
GridLayout {
anchors.fill: parent
columns: 2
Rectangle {
Layout.fillWidth: true
Layout.fillHeight: true
color: "red"
}
Rectangle {
Layout.fillWidth: true
Layout.fillHeight: true
color: "blue"
}
} //GridLayout
}
以上是关于如何在QML中将RowLayout正确拆分为两个相等的字段?的主要内容,如果未能解决你的问题,请参考以下文章