在 QML 中的委托中访问 modelData

Posted

技术标签:

【中文标题】在 QML 中的委托中访问 modelData【英文标题】:Access modelData within delegate in QML 【发布时间】:2016-09-26 14:59:44 【问题描述】:

有没有办法从 View 委托(特别是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)
        
    

【问题讨论】:

你看到this页面了吗? 【参考方案1】:

您可以在委托元素上添加一个属性

Component 
    id: comp_1
    Rectangle 
        property string valueFromModel
    

并将modelData绑定到它

Loader 
    id: loader
    Binding 
        target: loader.item
        property: "valueFromModel"
        value: model.modelData
    

【讨论】:

以上是关于在 QML 中的委托中访问 modelData的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QML 中访问 ListView 的 ListModel 的 ListElement 的映射委托数据?

QML ListView 访问委托的项目

QML 视图中的 Foreach 委托

有没有可能使用 QML 替换视图中的委托?

使用 QML 从委托文件中获取元数据

如何从 QML 中的 GridView 或 ListView 获取实例化的委托组件