QML:如何将子对象添加到基础组件的子对象而不是组件的根对象?

QML: How to add children to a base component's child instead of the root object of the component?

我有一个名为 MyChart.qml 的基本组件,如下所示

Item {
    id: root
    
    ChartView {
        id: myChartView
    }
    
    RowLayout {
        id: myToolbar
        }
    }
}

所以它基本上是一个图表,下方有一个工具栏。我在另一个组件中继承这个组件是这样的:

MyChart {
    *List of Children*
}

在这里,如何将 子列表 添加到 myToolbar 而不是 root MyChart 组件的?

每个项目都有 属性 data,当您在另一个项目中添加一个对象时,它被用作默认值 属性。默认 属性 表示如果您未指定任何 属性 则假定为那个。

例如:Statesdefault property states: [],所以你可以

States {
   State{},
   State{}
}

因为它们都引用默认值 属性。 因此,关于您的示例,足以公开您希望成为组件直接父亲的组件的默认 属性

MyChart.qml

Item {
   id: root
   
   default property alias data: myToolbar.data
   
   ChartView {
      id: myChartView
   }
   
   RowLayout {
      id: myToolbar
   }
}

现在您使用的任何子组件都将直接添加到行布局中

MyChart {
    Rectangle { width: 100; height: 100; color:"red"}
    Rectangle { width: 100; height: 100; color:"skyblue"}
}