Как повторно использовать делегат вложенного списка? - PullRequest
0 голосов
/ 01 января 2019

У меня есть вложенная структура просмотра списка, в которой просмотр списка делегата будет содержать другой просмотр списка.Я бы хотел, чтобы делегат вложенного списка просматривал себя, потому что вложенный список будет содержать тот же тип элемента, что и он сам, но это не работает.

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 голосов
/ 01 января 2019

Может быть связано с этой ошибкой .По сути, в QML есть несколько проверок, которые должны предотвращать случайные бесконечные рекурсии, но они не особенно хорошо реализованы и вызывают ложные срабатывания даже для сценария, в котором предполагается вложение и нет опасности бесконечной рекурсии.

Если это так, то вы можете обмануть эту проверку, используя дополнительный Loader, который загрузит компонент из строки, которая не будет перехватывать вложенную рекурсию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...