Instantiator QML Type
动态创建对象。更多...
| Import Statement: | import QtQml.Models |
属性
- active : bool
- asynchronous : bool
- count : int
- delegate : QtQml::Component
- delegateModelAccess : enumeration
(since 6.10) - model : variant
- object : QtObject
信号
- objectAdded(int index, QtObject object)
- objectRemoved(int index, QtObject object)
方法
- QtObject objectAt(int index)
详细说明
Instantiator 可用于控制对象的动态创建,或根据模板动态创建多个对象。
Instantiator 元素将管理其创建的对象。这些对象隶属于 Instantiator,并且如果 Instantiator 的属性发生变化,Instantiator 也可以删除这些对象。对象还可以通过其他方式被动态销毁,除非 Instantiator 的属性发生变化,否则 Instantiator 不会重新创建它们。
注意: 自 2.14 版本起,Instantiator 属于QtQml.Models 的一部分;自 2.1 版本起,属于QtQml 的一部分。自 Qt 5.14 起,通过QtQml 导入 Instantiator 的方式已被废弃。
属性文档
active : bool
当 active 为 true 且委托组件就绪时,Instantiator 将根据模型创建对象。当 active 为 false 时,不会创建任何对象,且之前创建的对象将被销毁。
默认值为 true。
asynchronous : bool
当“asynchronous”为 true 时,Instantiator 将尝试异步创建对象。这意味着即使将“active”设置为 true,对象也可能无法立即可用。
您可以使用objectAdded 信号来响应对象的创建。
默认值为 false。
count : int [read-only]
Instantiator 当前管理的对象数量。
delegate : QtQml::Component [default]
用于创建所有对象的组件。
请注意,在委托的实例内部将提供一个额外的变量 index。该变量表示该实例在 Instantiator 中的索引,可用于通过 Instantiator 的objectAt 方法获取该对象。
如果更改此属性,所有使用旧委托的实例都将被销毁,并将使用新委托创建新实例。
delegateModelAccess : enumeration [since 6.10]
此属性决定了委托如何访问模型。
| 常量 | 描述 |
|---|---|
DelegateModel.ReadOnly | 禁止委托通过上下文属性、model 对象或必填属性写入模型。 |
DelegateModel.ReadWrite | 允许委托通过上下文属性、model 对象或必填属性写入模型。 |
DelegateModel.Qt5ReadWrite | 允许委托通过“model ”对象和上下文属性写入模型,但不能通过必填属性写入模型。 |
默认值为 `DelegateModel.Qt5ReadWrite`。
该属性在 Qt 6.10 中引入。
另请参阅 《Qt Quick 中的模型和视图》#更改模型数据。
model : variant
该属性可以设置为任何受支持的数据模型:
- 一个数字,表示重复器将创建的委托对象数量
- 一个模型(例如,ListModel 项,或QAbstractItemModel 的子类)
- 一个字符串列表
- 对象列表
模型的类型会影响向delegate 公开的属性。
默认值为 1,这将创建一个委托实例。
另请参阅 “数据模型”。
object : QtObject [read-only]
这是对第一个创建的对象的引用,旨在方便处理仅创建了一个对象的情况。
Signal 文档
objectAdded(int index, QtObject object)
当向 Instantiator 添加对象时,会触发此信号。index 参数包含该对象被分配的索引,而object 参数包含已添加的QtObject 。
注意: 对应的处理程序 为onObjectAdded 。
objectRemoved(int index, QtObject object)
当从实例化器中移除一个对象时,会发出此信号。index 参数保存了该对象被分配的索引,而object 参数保存了已被移除的QtObject 。
如果 `object ` 是由该 Instantiator 创建的,请不要保留对其的引用,因为在这种情况下,该对象将在信号被处理后不久被删除。
注意: 相应的处理程序 是onObjectRemoved 。
方法文档
QtObject objectAt(int index)
返回指向具有给定index 的对象的引用。
© 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.