列表元素未垂直显示

时间:2018-08-01 11:05:14

标签: qt listview

在Qt 5.9.4上,我有一个ListViewmodeldelegate,如下所示:

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项顶部显示,如下所示:

ListView is not as I intend

任何人都可以提示我如何在垂直行中显示ListElement,在另一行下面


更新

@Amfasis在评论中建议,我明确确定了height项目的ListView

height: parent.height + 100
anchors.top: img0.bottom

经过上述修改,现在列表看起来更好了:

ListView looks better

1 个答案:

答案 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
    }
}

更好的办法是尽可能多地吸收所有孩子,但我不确定如何做到最好