QML 在 GridLayout 中,如何将不可见的单元格约束为 0 高度?

QML In a GridLayout, how to constraint a cell with an invisible to have a 0 height?

我有这样布局的 GridLayout:

AAAA
C D
C E
C E
C E
C F
CG
HHHH

E有Layout.fillHeight: true,F有首选身高,
D 和 G 可以隐藏并根据其内容设置 preferredHeight:

Item {
    Layout.row: 2
    Layout.column: 2            
    Layout.columnSpan: 1
    Layout.rowSpan: 1

    id : D
    visible : false
    Layout.preferredWidth : layConfig.implicitWidth + 10
    Layout.preferredHeight : layConfig.implicitHeight + 10
    anchors.margins : 20
    Grid {
        id : layConfig
        ...
        }

当 D 和 G 可见时,它们的大小正确。 但是当它们 不可见 时,它们会被 空的 space 而不是高度为 0 的单元格代替。

AAAA
C
C
C E
C E
C F
CG
HHHH

虽然这是预期的:

AAAA
C E
C E
C E
C E
C F
CG
HHHH

现在,我只是在 GridLayout 中添加了一个额外的 ColumnLayout 来管理元素 D->G。 短期内它是有效的,但从长远来看,它会使整个代码复杂化。

在隐藏单元格的情况下,如何使用纯 GridLayout 强制设置 0 高度?

由于您已经设置了 D 单元格的 preferredHeight,因此您可以扩展它的绑定以包括单元格的可见性:

Layout.preferredWidth : D.visible ? layConfig.implicitWidth + 10 : 0

由于您没有显示其余代码,因此可能需要进行一些额外的调整,但这应该更进一步。例如,rowSpan 可能需要针对 C 进行调整,也许您正在使用 Layout.row?