【发布时间】:2021-04-16 23:46:53
【问题描述】:
我正在尝试根据树中的项目深度更改 TreeView 中的行高。 itemDelegate 可以访问 depth 属性(因此我可以更改 item 的高度),但是行高只能从 rowDelegate 设置,无法看到 item 深度。
从示例中可以看出,我需要更改行高以匹配深度。 rowdelegate 如何从模型中确定项目深度?
Component {
id: delegateMenuItem
Column {
height: 100 // No effect
spacing: 20 // No effect
bottomPadding: 20 // No effect
Rectangle {
border {
color: "blue"
width: 2
}
color: "red"
height: itemText.height * 2
width: 300
Text {
id: itemText
text: qsTr(styleData.value)+"-"+height
color: "white"
font.pointSize: fontSize(styleData.depth)
}
}
}
}
【问题讨论】:
-
您是否尝试过改用
itemDelegate? -
我上面的代码是 itemDelegate。我还有一个 rowDelegate,它只设置行的高度。我不知道如何允许 itemDelegate 调整它显示的行的大小。
-
所以要确认一下,使用
styleData.depth设置itemDelegate的implicitHeight不会给你正确的大小? -
@Pooya - 设置 ITEM 的高度,而不是 ROW。因此,如果我降低项目高度但不降低行高,则项目两侧都有很多空间。
-
我假设如果你没有设置
rowDelegate的height它的implicitHeight将被设置为最大的implicitHeight行中的项目。但我没试过。仅供参考,我已经使用来自市场的新TreeView使用rowHeightProvider完成了此操作。
标签: delegates qml treeview spacing