为什么 anchors.fill 在 QML ListView 的委托子视图中不起作用,什么是好的解决方案?
Why does anchors.fill does not work in a QML ListView's delegate's subviews, and what is a nice solution?
我遇到了这个:
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
根本不显示)。我想了解这背后的机制。另外,我想问一下处理这种情况的首选方法是什么?
谢谢!
Item
有一个 implicitWidth
和 implicitHeight
为零,所以让你的 Rectangle
和 Text
填充它会导致它们没有大小嗯。
您的代码有两处错误:
ListView
没有指定 width
或 height
。
- 您的代表没有
width
指定。
这是一种正确的方法:
import QtQuick 2.0
import QtQuick.Window 2.0
Window {
width: 300
height: 300
visible: true
ListView {
id: listView
anchors.fill: parent
model: ["Lorem","Ipsum"]
delegate: Item {
width: listView.width
height: textItem.implicitHeight
Text {
id: textItem
z: 2
text: modelData
width: parent.width
}
Rectangle {
z: 1
color: "red"
anchors.fill: parent
}
}
}
}
documentation of ListView
有更多信息。
我遇到了这个:
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
根本不显示)。我想了解这背后的机制。另外,我想问一下处理这种情况的首选方法是什么?
谢谢!
Item
有一个 implicitWidth
和 implicitHeight
为零,所以让你的 Rectangle
和 Text
填充它会导致它们没有大小嗯。
您的代码有两处错误:
ListView
没有指定width
或height
。- 您的代表没有
width
指定。
这是一种正确的方法:
import QtQuick 2.0
import QtQuick.Window 2.0
Window {
width: 300
height: 300
visible: true
ListView {
id: listView
anchors.fill: parent
model: ["Lorem","Ipsum"]
delegate: Item {
width: listView.width
height: textItem.implicitHeight
Text {
id: textItem
z: 2
text: modelData
width: parent.width
}
Rectangle {
z: 1
color: "red"
anchors.fill: parent
}
}
}
}
documentation of ListView
有更多信息。