【发布时间】:2015-12-01 18:42:50
【问题描述】:
潜在相关:https://stackoverflow.com/a/30860285/3363018
我一直在尝试创建一个 QML 布局,其中的项目跨越可变数量的行和列。因此,例如,一个跨越两行四列的矩形,其右侧的一个跨越一行两列,而下方的一个跨越三行五列。创建它的一般尝试如下:
import QtQuick 2.5
import QtQuick.Layouts 1.2
import QtQuick.Controls 1.4
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
GridLayout {
anchors.fill: parent
columns: 5
rows: 2
Rectangle {
Layout.column: 0
Layout.columnSpan: 4
Layout.row: 0
Layout.rowSpan: 2
Layout.fillHeight: true
Layout.fillWidth: true
color: "red"
}
Rectangle {
Layout.column: 4
Layout.columnSpan: 1
Layout.row: 0
Layout.rowSpan: 2
Layout.fillHeight: true
Layout.fillWidth: true
color: "green"
}
Rectangle {
Layout.column: 0
Layout.columnSpan: 5
Layout.row: 2
Layout.rowSpan: 3
Layout.fillHeight: true
Layout.fillWidth: true
color: "blue"
}
}
}
结果如下:
如您所见,Layout.rowSpan 和 Layout.columnspan 似乎不起作用。相反,前两行似乎占用 1:1 而不是 4:1,顶部与底部的比例是 1:1 而不是 2:3。我怀疑这与 Layout.fillHeight 和 Layout.fillWidth 有关。 The documentation 状态:
如果此属性为真,则项目将尽可能宽,同时 尊重给定的约束。
但我不确定在这种情况下“给定的约束”是什么。我曾希望它包括行和列跨度,但似乎没有。
我可能可以直接计算项目的宽度和高度(或者可能是 Layout.preferredWidth 和 Layout.preferredHeight),但这似乎会使 Layout.rowSpan 和 Layout.columnSpan 完全多余。有没有办法根据网格行和列自动计算高度?
【问题讨论】:
-
声明中有错误:行数应该是5,而不是2。这并不能解决问题。