为什么anchors.fill不能在QML ListView的委托子视图中工作,什么是一个很好的解决方案?

时间:2015-07-13 11:20:29

标签: qt listview qml qtquick2

我遇到了这个:

ListView {
    id: listView
    model: ["Lorem","Ipsum"]
    delegate: Item {

        height: 20
        Text {
            z: 2
            text: modelData
            anchors.fill: parent
        }

        Rectangle {
            z: 1
            color: "red"
            // this does not work:
            anchors.fill: parent
            // this works, but I have mixed feelings about it:
            // height: 20; width: listView.width
        }
    }
}

所以,显然,anchors在委托的子项目中不起作用(在这种情况下,Rectangle根本不显示)。我想了解这背后的机制。另外,我想问一下处理这种情况的首选方法是什么? 谢谢!

1 个答案:

答案 0 :(得分:11)

Item的{​​{1}}和implicitWidth为零,因此填充implicitHeightRectangle会导致它们没有大小。

您的代码有两个问题:

  1. Text未指定ListViewwidth
  2. 您的代理人未指定height
  3. 以下是正确执行此操作的一种方法:

    width

    documentation of ListView有更多信息。