在Qt 5.9.4上,我有一个ListView
和model
和delegate
,如下所示:
Rectangle {
Column {
Image {
id: img0
source: "images/img0.png"
}
ListView {
model: ListModel {
ListElement {
dimName: "D top"
}
ListElement {
dimName: "D mid"
}
ListElement {
dimName: "D bot"
}
ListElement {
dimName: "H top"
}
ListElement {
dimName: "H bot"
}
}
delegate: RowLayout {
StyledLabel {
text: dimName
enabled: true
}
Rectangle {
}
SpinBox {
editable: true
enabled: true
from: 0
to: 1000
stepSize: 1
}
}
}
}
}
ListView
无法正确显示ListElement
。我的意思是所有元素都彼此显示,并在代码中的Image
项顶部显示,如下所示:
任何人都可以提示我如何在垂直行中显示ListElement
,在另一行下面。
更新
@Amfasis在评论中建议,我明确确定了height
项目的ListView
:
height: parent.height + 100
anchors.top: img0.bottom
经过上述修改,现在列表看起来更好了:
答案 0 :(得分:1)
您必须设置RowLayout
的高度,但是显式设置它当然不是很好。因此,您可以使用第一个孩子的身高,也可以使用其他人的身高(实际上,您的情况可能是SpinBox
)
delegate: RowLayout {
anchors.left: parent.left
anchors.right: parent.right
//height: children[0].height
height: spinbox.height //actually better in your case
StyledLabel {
text: dimName
enabled: true
}
Rectangle { }
SpinBox {
id: spinbox
editable: true
enabled: true
from: 0
to: 1000
stepSize: 1
}
}
更好的办法是尽可能多地吸收所有孩子,但我不确定如何做到最好