我试图通过为每个项目指定一种权重来找出按比例布局项目的方法。例如,Android执行layouts的方式。
我试图实现它的方式是这样的:
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
GridLayout {
columns: 4
width: 640
height: 480
Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.columnSpan: 1
}
}
我希望中间矩形的宽度是其他两个矩形的总和,但它们都是相等的宽度。
在布局附加属性上使用关系绑定似乎总是会导致奇怪的绑定循环。我知道我可以使用一行代替关系绑定,但如果可能的话,我更喜欢使用布局。
编辑
这似乎按我想要的方式工作,但我不知道它为什么会这样。它的行为就像preferredWidth
值是项目的权重一样。
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
RowLayout {
width: 640
height: 480
Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
}
答案 0 :(得分:1)
不确定是否有意,但Layout.preferredWidth
(或Layout.preferredHeight
对于ColumnLayouts)可以用作“权重”。在指定Layout.minimumWidth
时情况会中断,但我认为在尝试按照权重实现布局时指定最小尺寸并不合理。
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
RowLayout {
width: 640
height: 480
Rectangle {
color: "red"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
Rectangle {
color: "#80000000"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 2
}
Rectangle {
color: "blue"
Layout.fillHeight: true
Layout.fillWidth: true
Layout.preferredWidth: 1
}
}