# | QML 组件 |
组件是可重用的、封装好的QML类型,并提供了定义好的接口。组件一般使用一个.qml文件定义。前面讲到的使用QML文档定义对象类型,其实就是创建了一个组件。这种使用独立QML文件创建组件的方法这里不再讨论。除了使用单独的QML文件,还可以使用Component类型在一个QML文档中定义一个组件。这种方式是很有用的,例如在QML文件中重用一个小型组件,或定义一个逻辑上属于该文件中其他QML组件的组件。
下面的例子中在文档内部使用Component类型定义了一个组件,其他只包含一个Rectangle,该组件被多个Loader对象使用。
注意,一般Rectangle会自己渲染并进行显示,但是这里却不会。因为它定义在一个Component内部。组件内部封装的QML类型相当于定义在独立的QML文件中,会在需要时才进行加载(例如这里由两个Loader对象进行加载)。因为Component不是继承自Item,所以不能对其进行布局或锚定其他对象。
定义Component与定义QML文档类似。QML文档包含一个唯一的根对象来定义组件的行为和属性,并且不能在根对象之外定义行为或属性。类似的,Component定义也包含一个唯一的根对象(例如这里的Rectangle),并且不能在根对象之外定义任何数据,只能使用id进行引用(例如在Loader中使用redSquare)。
Component类型一般用于为视图提供图形组件。例如,ListView: