Michael Japzon
Michael Japzon

Reputation: 201

How to reuse a nested listview's delegate?

I have a nested listview structure where the delegate listview will contain another listview. I would like the nested listview's delegate to refer to itself because the nested listview will contain the same type of item as itself, but this doesn't appear to work.

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
            }
        }
    }

} 

This works:

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
            }
        }
    }
}

}

Is there a way to reuse the same delegate you are a part of?

Upvotes: 0

Views: 587

Answers (1)

dtech
dtech

Reputation: 49289

It may be connected to this bug. Basically, QML has some checks that are supposed to prevent accidental infinite recursions, but they are not particularly well implemented, and trigger false positives even for scenario where nesting is intended and there is no danger of infinite recursion.

If that is the case, then you can trick that check by using an additional Loader that will load the component from a string, which will not catch the nesting recursion.

Upvotes: 1

Related Questions