在 QML 的委托中访问模型数据
Access modelData within delegate in QML
有没有办法从 View delegate(尤其是 Repeater)访问 modelData
。
我尝试使用单独的 属性 并尝试通过 model.modelData
访问它,但这都不起作用。
请参阅下面的代码快照。
提前致谢。
Component
{
id: comp_1
Rectangle
{
color: "green"
width: 200
height: 200
}
}
Component
{
id: comp_2
Rectangle
{
color: "red"
width: 200
height: 200
Text
{
anchors.fill: parent
text: modelData
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}
}
function getDelegate(itemName)
{
if(itemName === "comp1")
return comp_1;
else
return comp_2;
}
Row
{
Repeater
{
id: repeat
model: ["comp1", "comp2"]
Loader
{
sourceComponent: getDelegate(modelData)
}
}
}
您可以在委托元素上添加 属性
Component {
id: comp_1
Rectangle {
property string valueFromModel
}
}
并将模型数据绑定到它
Loader {
id: loader
Binding {
target: loader.item
property: "valueFromModel"
value: model.modelData
}
}
有没有办法从 View delegate(尤其是 Repeater)访问 modelData
。
我尝试使用单独的 属性 并尝试通过 model.modelData
访问它,但这都不起作用。
请参阅下面的代码快照。
提前致谢。
Component
{
id: comp_1
Rectangle
{
color: "green"
width: 200
height: 200
}
}
Component
{
id: comp_2
Rectangle
{
color: "red"
width: 200
height: 200
Text
{
anchors.fill: parent
text: modelData
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}
}
function getDelegate(itemName)
{
if(itemName === "comp1")
return comp_1;
else
return comp_2;
}
Row
{
Repeater
{
id: repeat
model: ["comp1", "comp2"]
Loader
{
sourceComponent: getDelegate(modelData)
}
}
}
您可以在委托元素上添加 属性
Component {
id: comp_1
Rectangle {
property string valueFromModel
}
}
并将模型数据绑定到它
Loader {
id: loader
Binding {
target: loader.item
property: "valueFromModel"
value: model.modelData
}
}