QML: ввод элемента в иерархию элементов

#qt #qml #qt5 #qtquick2

#qt #qml #qt5 #qtquick2

Вопрос:

У меня есть повторно используемый элемент, который выглядит следующим образом:

Повторно используемый.qml:

 Flickable {
    CustomCppComponent {
        id: customComponent
    }
}
 

Теперь я хотел бы создать его экземпляр с дополнительным дочерним элементом:

Main.qml:

 Item {
    Reusable {
        Rectangle {
            id: rect
            anchors.fill: parent
        }
    }
}
 

Но я хочу Rectangle быть помещен в качестве дочернего CustomComponent элемента, поэтому эквивалент будет:

Main.qml:

 Item {
    Flickable {
        CustomCppComponent {
            id: customComponent
            Rectangle {
                id: rect
                anchors.fill: parent
            }
        }
    }
}
 

Как мне это сделать?

Ответ №1:

Самый простой способ — использовать default property .

Повторно используемый.qml:

 Flickable {
    default property alias innerContents: customComponent.data
    CustomCppComponent {
        id: customComponent
    }
}
 

Поскольку innerContents это свойство по умолчанию, все дочерние объекты, которые вы добавляете в свой Reusable экземпляр, будут добавлены к innerContents , что указывает на data свойство CustomComponent .

Это предполагает, что CustomCppComponent это, конечно, визуальный элемент, который ваш вопрос не определил.