class QQmlListReference#

QQmlListReference允许操作QQmlListProperty属性。更多

概览#

方法#

注意

此文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单来告诉我们

详细说明#

QQmlListReference 允许 C++ 程序以简单且类型安全的方式读取和向 QML 列表属性赋值。《a class="reference internal" href="#PySide6.QtQml.QQmlListReference" title="PySide6.QtQml.QQmlListReference">QQmlListReference 可以通过传递对象和属性名或通过一个 QQmlProperty 实例来创建。这两个是等价的。

QQmlListReference ref1(object, "children");

QQmlProperty ref2(object, "children");
QQmlListReference ref2 = qvariant_cast<QQmlListReference>(ref2.read());

并非所有QML列表属性都支持所有操作。一组方法,包括canAppend()canAt()canClear()canCount(),允许程序查询在给定的属性上进行操作是否受支持。

QML列表属性是类型安全的。只有从正确的基本类派生出的QObject可以分配到列表中。可以使用listElementType()方法查询支持QObject类型的QMetaObject。尝试将非正确类型的对象添加到列表属性中会导致失败。

与普通列表类似,当按索引访问列表元素时,确保在使用at()之前不为使用count()方法导致的索引超出范围请求负责。

__init__
参数:
  • oQObject

  • property – 字符串

objectproperty构造一个QQmlListReference。如果property不是一个列表属性,则会创建一个无效的QQmlListReference。如果创建引用后对象被销毁,引用将自动变为无效。也就是说,即使在object被删除后,也可以安全地保留QQmlListReference实例。

__init__
参数:
  • oQObject

  • property – 字符串

  • engineQQmlEngine

注意

该函数已弃用。

请使用不带QQmlEngine参数的构造函数。

objectproperty构造一个QQmlListReference。如果property不是一个列表属性,则会创建一个无效的QQmlListReference。如果创建引用后对象被销毁,引用将自动变为无效。也就是说,即使在object被删除后,也可以安全地保留QQmlListReference实例。

engine不再使用。

__init__
参数:

arg__1QQmlListReference

从包含一个 QQmlListProperty 的 QVariant variant 构造一个 QQmlListReference。如果 variant 不包含列表属性,则创建一个无效的 QQmlListReference。如果在构造引用之后销毁拥有列表属性的对象,它将自动变为无效。也就是说,即使在对象被删除之后,也可以安全地持有 QQmlListReference 实例。

__init__(variant)
参数:

variant – 对象

从包含一个 QQmlListProperty 的 QVariant variant 构造一个 QQmlListReference。如果 variant 不包含列表属性,则创建一个无效的 QQmlListReference。如果在构造引用之后销毁拥有列表属性的对象,它将自动变为无效。也就是说,即使在对象被删除之后,也可以安全地持有 QQmlListReference 实例。

__init__(variant, engine)
参数:
  • variant – 对象

  • engineQQmlEngine

注意

该函数已弃用。

请使用不带QQmlEngine参数的构造函数。

从包含一个 QQmlListProperty 的 QVariant variant 构造一个 QQmlListReference。如果 variant 不包含列表属性,则创建一个无效的 QQmlListReference。如果在构造引用之后销毁拥有列表属性的对象,它将自动变为无效。也就是说,即使在对象被删除之后,也可以安全地持有 QQmlListReference 实例。

engine不再使用。

__init__()

构造一个无效实例。

append(arg__1)
参数:

arg__1QObject

返回类型::

bool

object 添加到列表中。如果操作成功则返回 true,否则返回 false。

另请参阅:

canAppend()

at(arg__1)
参数:

arg__1 – int

返回类型::

QObject

返回位于 index 的列表元素,如果操作失败则返回 0。

另请参阅:

canAt()

canAppend()
返回类型::

bool

如果列表属性可以追加,则返回 true,否则返回 false。如果引用无效,则返回 false。

canAt()
返回类型::

bool

如果列表属性可以按索引查询,则返回 true,否则返回 false。如果引用无效,则返回 false。

canClear()
返回类型::

bool

如果列表属性可以被清除,则返回 true,否则返回 false。如果引用无效,则返回 false。

canCount()
返回类型::

bool

如果可以查询列表属性中的元素数量,则返回 true,否则返回 false。如果引用无效,则返回 false。

canRemoveLast()#
返回类型::

bool

如果可以从列表属性中移除最后一个项目,则返回 true,否则返回 false。如果引用无效,则返回 false。

另请参阅:

removeLast()

canReplace()#
返回类型::

bool

如果可以替换列表属性中的项目,则返回 true,否则返回 false。如果引用无效,则返回 false。

另请参阅:

replace()

clear()#
返回类型::

bool

清空列表。如果操作成功,则返回 true,否则返回 false。

另请参阅:

canClear()

count()#
返回类型::

int

返回列表中的对象数量,或者在操作失败时返回 0。

isManipulable()#
返回类型::

bool

如果at()count()append()、以及 clear()removeLast() 中有任何一个是实现的话,将返回 true,因此您可以操作列表。

请注意,replace()removeLast() 可以通过使用 clear()append() 重新构建整个列表来实现。因此,它们不是使列表可操作所必需的。此外,使用 removeLast() 可以模拟 clear()

isReadable()#
返回类型::

bool

如果at()count()已实现,则返回true,您即可访问元素。

另请参阅:

isManipulable() at() count()

isValid()#
返回类型::

bool

如果实例引用有效列表属性,则返回true,否则返回false。

listElementType()#
返回类型::

QMetaObject

返回列表属性中存储的元素的QMetaObject,或如果引用无效则返回None。

可以在构造函数中未传递引擎之前使用QMetaObject来预确定给定实例是否可添加到列表中。如果在构造函数中没有传递引擎,这可能会返回nullptr。

object()#
返回类型::

QObject

返回列表属性的对象。如果引用无效,则返回None。

__eq__(other)#
参数:

otherQQmlListReference

返回类型::

bool

比较此 QQmlListReference其他,并在它们相等时返回 true。只有当其中一个是通过复制赋值或复制构造函数从另一个创建时,这两个才被认为是相等的。

注意

分别创建的同一对象的引用不被视为相等。

removeLast()#
返回类型::

bool

从列表中移除最后一个项目。如果操作成功,则返回 true,否则返回 false。

另请参阅:

canRemoveLast()

replace(arg__1, arg__2)#
参数:
  • arg__1 – int

  • arg__2QObject

返回类型::

bool

object 替换列表中的索引为 index 的项目。如果操作成功,则返回 true,否则返回 false。

另请参阅:

canReplace()

size()#
返回类型::

int

返回列表中的对象数量,或者在操作失败时返回 0。