Итак, сначала кое-что о вашем названии: я понятия не имею, что вы считаете данными делегата , но, возможно, мы все равно найдем удовлетворительный ответ.
Для вашей ошибки, я бы сказал,это ожидаемо.Давайте разберем ваш код на более мелкие части:
mpMainLayerWnd = mpWnd->findChild<QQuickItem*>("main_layer_wnd"); // 1
QVariant prop = mpMainLayerWnd->property("contentItem") // 2
QQuickItem* content = prop.value<QQuickItem*>(); // 3
QList<QQuickItem*> list = content->childItems(); // 4
- Вы найдете ребенка.Это должно быть хорошо, и у вас будет
QQuickItem*
в mpMainLayerWnd - Вы пытаетесь прочитать свойство
contentItem
, которое не существует.Вы получаете пустой QVariant
. - Вы пытаетесь преобразовать содержимое пустого
QVariant
в QQuickItem*
, что приведет к nullptr
- Вы пытаетесь получить доступ кметод
nullptr
.
=> Нет метода childItems()
на nullptr
Что неясно моему, почему вы ожидаете иметьcontentItem
в Repeater
, поскольку не таковое задокументировано в QObject
, QQuickItem
или в Repeater
.
Скорее всего, вы смешаете default property
с contentItem
.Свойство по умолчанию - это свойство, которому QML автоматически назначает все, что вы создаете в { }
объекта, без присвоения его какому-либо другому свойству.
Item {
id: rootItem
Item { // this will go to the rootItems default property (data)
}
}
Следующим шагом является то, чем я былв начале интересно: к каким данным делегата вы пытаетесь получить доступ?Хотите получить Компонент?Затем вы можете прочитать свойство delegate
из Repeater
.
Вы хотите получить экземпляры delegate
?Здесь я немного растерялся.Я думаю, что они входят в children()
Repeater
и childItem()
в Repeater
s родителя.