我遵循了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
}
}
如何使委托宽度适应外部矩形的宽度变化?
答案 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