QQmlListReference 类

QQmlListReference 类允许以简单且类型安全的方式操作 QQmlListProperty 属性。 更多...

头文件 #include <QQmlListReference>
CMakefind_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmakeQT += qml

公共函数

QQmlListReference()
(自 6.1) QQmlListReference(const QVariant &variant)
QQmlListReference(QObject *object, const char *property)
boolappend(QObject *object) const
QObject *at(qsizetype index) const
boolcanAppend() const
boolcanAt() const
boolcanClear() const
boolcanCount() const
boolcanRemoveLast() const
boolcanReplace() const
boolclear() const
qsizetypecount() const
boolisManipulable() const
boolisReadable() const
boolisValid() const
const QMetaObject *listElementType() const
QObject *object() const
boolremoveLast() const
boolreplace(qsizetype index, QObject *object) const
(since 6.2) qsizetypesize() const
booloperator==(const QQmlListReference &other) const

详细描述

QQmlListReference 允许 C++ 程序以一种简单且类型安全的方式从 QML 列表属性中读取以及向其赋值。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()方法查询支持的QMetaObject的QObject类型。尝试将错误类型的对象添加到列表属性将失败。

像常规列表一样,当通过索引访问列表元素时,确保在使用count()方法之前不请求范围之外的元素是调用者的责任。

成员函数说明

QQmlListReference::QQmlListReference()

构造一个无效实例。

[显式,自6.1版本以来] QQmlListReference::QQmlListReference(const QVariant &variant)

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

此函数从Qt 6.1版本开始引入。

QQmlListReference::QQmlListReference(QObject *object, const char *property)

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

bool QQmlListReference::append(QObject *object) const

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

另请参阅canAppend().

QObject *QQmlListReference::at(qsizetype index) const

返回索引为index的列表元素,或如果操作失败则返回0。

另请参阅canAt().

bool QQmlListReference::canAppend() const

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

另请参阅append().

bool QQmlListReference::canAt() const

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

另请参阅at().

bool QQmlListReference::canClear() const

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

另请参阅clear().

bool QQmlListReference::canCount() const

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

另请参阅 count()。

bool QQmlListReference::canRemoveLast() const

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

另请参阅 removeLast()。

bool QQmlListReference::canReplace() const

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

另请参阅 replace()。

bool QQmlListReference::clear() const

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

另请参阅 canClear()。

qsizetype QQmlListReference::count() const

返回列表中的对象数量,如果操作失败则返回 0。

bool QQmlListReference::isManipulable() const

如果 at()、count()、append() 以及 clear() 或 removeLast() 已实现,则返回 true,这样您就可以操作列表。

请注意,replace() 和 removeLast() 可以通过使用 clear() 和 append() 来模拟所有项目,并重新构建列表,因此它们对于列表可操作不是必需的。此外,可以使用 removeLast() 来模拟 clear

另请参阅 isReadable()、at()、count()、append()、clear()、replace() 和 removeLast()。

bool QQmlListReference::isReadable() const

如果已经实现了 at() 和 count(),则返回 true,这样就可以访问元素。

另请参阅 isManipulable()、at() 和 count()。

bool QQmlListReference::isValid() const

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

const QMetaObject *QQmlListReference::listElementType() const

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

可以使用 QMetaObject 来事先确定给定的实例是否可以添加到列表中。如果在构建时没有传递引擎,则可能返回 nullptr。

QObject *QQmlListReference::object() const

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

bool QQmlListReference::removeLast() const

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

另请参阅 canRemoveLast()。

bool QQmlListReference::replace(qsizetype index, QObject *object) const

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

另请参阅 canReplace

[since 6.2] qsizetype QQmlListReference::size() const

返回列表中的对象数量,如果操作失败则返回 0。

此功能在 Qt 6.2 中引入。

bool QQmlListReference::operator==(const QQmlListReference &other) const

将此 QQmlListReferenceother 进行比较,如果它们相等,则返回 true。只有通过复制赋值或复制构造函数从另一方面创建时,它们才被认为是相等的。

注意: 独立创建的对同一对象的引用不被认为是相等的。

© 2024 Qt 公司 Ltd. 本文件中包含的文档贡献由其各自的所有者持有版权。本文件提供的文档是根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款许可的。Qt 及其相关标志是芬兰的 Qt 公司及其全球子公司和其他国家的商标。所有其他商标均为其各自所有者的财产。