本页内容

Repeater3D QML Type

使用提供的模型实例化若干基于 Node 的组件。更多内容...

Import Statement: import QtQuick3D
Inherits:

Node

Inherited By:

InstanceRepeater

属性

信号

方法

详细说明

Repeater3D 类型用于创建大量相似的项目。与其他视图类型一样,Repeater3D 具有一个model 和一个delegate :对于模型中的每个条目,该委托都会在预先填充了模型数据的上下文中实例化。

Repeater 的model 可以是任何受支持的数据模型。此外,与其他视图的委托类似,Repeater 委托可以访问其在 Repeater 中的索引,以及与该委托相关的模型数据。详情请参阅delegate 属性的文档。

注意: Repeater3D项 拥有其实例化的所有项。移除或动态销毁由 Repeater3D 创建的项将导致不可预测的行为。

注意:Repeater3D 基于Node ,且仅能循环显示从Node 派生的对象。

属性文档

count : int [read-only]

该属性保存模型中的项目数量。

注意: 如果Repeater3D 正在实例化委托,或者配置不正确,则`count`报告的模型中项目数量可能与已创建的委托数量不一致。

delegate : Component [default]

该委托提供了一个模板,用于定义由重复器实例化的每个对象。

委托会暴露一个只读的 `index ` 属性,该属性指示委托在重复器中的索引。

如果model 是一个模型对象(例如ListModel ),则委托可以像对ListView 等视图类那样,通过命名属性访问所有模型角色。

另请参阅 QML 数据模型。

delegateModelAccess : enumeration [since 6.10]

此属性决定了委托如何访问模型。

常量描述
DelegateModel.ReadOnly禁止委托方通过上下文属性、model 对象或必填属性写入模型。
DelegateModel.ReadWrite允许委托通过上下文属性、model 对象或必填属性写入模型。
DelegateModel.Qt5ReadWrite允许委托通过 `model ` 对象和上下文属性写入模型,但不能通过必填属性写入模型。

默认值为 `DelegateModel.Qt5ReadWrite`。

该属性在 Qt 6.10 中引入。

另请参阅 《Qt Quick 中的模型和视图》中的“#更改模型数据”。

model : any

为中继器提供数据的模型。

该属性可设置为任何受支持的数据模型:

  • 一个数字,表示重复器将创建的委托对象数量
  • 一个模型(例如,ListModel 项,或QAbstractItemModel 的子类)
  • 一个字符串列表
  • 一个对象列表

模型的类型会影响向delegate 暴露的属性。

另请参阅 “数据模型”。

信号文档

objectAdded(int index, Object3D object)

当向中继器添加对象时,会触发此信号。index 参数保存该对象在中继器中被插入的索引位置,object 参数则保存已添加的Object3D 。

相应的处理程序为onObjectAdded 。

注意: 相应的处理程序 为onObjectAdded 。

objectRemoved(int index, Object3D object)

当某个对象从中继器中移除时,会发出此信号。index 参数保存该项从中继器中移除时的索引,object 参数则保存被移除的Object3D 。

如果 `object ` 是由该重复器创建的,请不要保留对其的引用,因为在这种情况下,该对象将在信号处理完成后不久被删除。

相应的处理程序是onObjectRemoved 。

注意: 相应的处理程序 是onObjectRemoved 。

方法文档

Object3D objectAt(index)

返回在指定index 处创建的Object3D ,如果index 下不存在该项,则返回null 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.