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
?
我有这样布局的 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
?