如何调整ListView的委托在调整视图的父级时调整其大小?

时间:2014-01-03 12:35:29

标签: qt listview qml qtquick2

我遵循了ListView(http://qt-project.org/doc/qt-5/qml-qtquick-listview.html#details)上的Qt 5.2文档。我的代码几乎与doc相同,除了contactDelegate的宽度,我想绑定到Rectangle listArea的宽度。

当我运行下面的代码时,它看起来像预期的那样。但是,当我调整窗口大小时,代理不会调整矩形的宽度。

import QtQuick 2.0

Rectangle {
    id: listArea
    width: 200; height: 50
    color: "#fffcca"

    Component {
        id: contactDelegate
        Item {
            width: listArea.width; height: 40
            Column {
                Text { text: '<b>Name:</b> ' + name }
                Text { text: '<b>Number:</b> ' + number }
            }
        }
    }

    ListModel {
        id: contactModel
        ListElement {
            name: "John Doe"
            number: "5555 1234"
        }
        ListElement {
            name: "Don Johnson"
            number: "5555 5432"
        }
    }

    ListView {
        id: contactView
        anchors.fill: parent
        model: contactModel
        delegate: contactDelegate
        highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
        focus: true
    }
}

如何使委托宽度适应外部矩形的宽度变化?

1 个答案:

答案 0 :(得分:2)

已经用外部矩形改变宽度。因为委托的width属性已经绑定到listArea的宽度。但问题是highlight中的contactView并没有改变它的宽度。
这可以通过将联系人视图的highlight中的width属性绑定到listArea的宽度来固定,就像contactDelegate一样,这会使它像这样

highlight: Rectangle { color: "lightsteelblue"; radius: 5; width: listArea.width }

这里有关于属性绑定的文档 http://qt-project.org/doc/qt-4.8/propertybinding.html