如何重用嵌套的listview的委托?

时间:2019-01-01 00:41:57

标签: qt listview delegates qml

我有一个嵌套的listview结构,其中委托listview将包含另一个listview。我希望嵌套的listview的委托引用自己,因为嵌套的listview将包含与自身相同的项目类型,但这似乎不起作用。

Component {
    id: subSequenceComponent

    ItemDelegate {
        id: subSequenceItemDelegate
        property var id: edit.id
        ColumnLayout {

            Text{
                text: edit.name
            }

            ListView {
                width: 180; height: 200

                model: items.subModelFromId(subSequenceItemDelegate.id)
                delegate: subSequenceComponent
            }
        }
    }

} 

这有效:

Component {
id: subSequenceComponent

ItemDelegate {
    id: subSequenceItemDelegate
    property var id: edit.id
    ColumnLayout {

        Text{
            text: edit.name
        }

        ListView {
            width: 180; height: 200

            model: items.subModelFromId(subSequenceItemDelegate.id)
            delegate: Text{
            text: edit.name
            }
        }
    }
}

}

是否可以重用您所属的同一委托?

1 个答案:

答案 0 :(得分:1)

它可能已连接到此bug。基本上,QML进行了一些检查,这些检查本来可以防止意外的无限递归,但是它们并不是特别好实现,即使在打算嵌套且没有无限递归危险的情况下,也会触发误报。

如果是这种情况,那么您可以使用附加的Loader来欺骗检查,该检查将从字符串中加载组件,而不会捕获嵌套递归。