QQmlListReference 类
QQmlListReference 类允许以简单且类型安全的方式操作 QQmlListProperty 属性。 更多...
头文件 | #include <QQmlListReference> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake | QT += qml |
公共函数
QQmlListReference() | |
(自 6.1) | QQmlListReference(const QVariant &variant) |
QQmlListReference(QObject *object, const char *property) | |
bool | append(QObject *object) const |
QObject * | at(qsizetype index) const |
bool | canAppend() const |
bool | canAt() const |
bool | canClear() const |
bool | canCount() const |
bool | canRemoveLast() const |
bool | canReplace() const |
bool | clear() const |
qsizetype | count() const |
bool | isManipulable() const |
bool | isReadable() const |
bool | isValid() const |
const QMetaObject * | listElementType() const |
QObject * | object() const |
bool | removeLast() const |
bool | replace(qsizetype index, QObject *object) const |
(since 6.2) qsizetype | size() const |
bool | operator==(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)
从一个包含QQmlListProperty的QVariant 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()。 如果已经实现了 at() 和 count(),则返回 true,这样就可以访问元素。 另请参阅 isManipulable()、at() 和 count()。 如果实例引用了有效的列表属性,则返回 true,否则返回 false。 返回列表属性中存储的元素的 QMetaObject,如果引用无效,则返回 nullptr。 可以使用 QMetaObject 来事先确定给定的实例是否可以添加到列表中。如果在构建时没有传递引擎,则可能返回 nullptr。 返回列表属性的对象。如果引用无效,则返回 删除列表中的最后一个项目。如果操作成功,返回 true,否则返回 false。 另请参阅 canRemoveLast()。 用 object 替换列表中索引为 index 的项目。如果操作成功,返回 true,否则返回 false。 另请参阅 canReplace。 返回列表中的对象数量,如果操作失败则返回 0。 此功能在 Qt 6.2 中引入。 将此 QQmlListReference 与 other 进行比较,如果它们相等,则返回 注意: 独立创建的对同一对象的引用不被认为是相等的。bool QQmlListReference::isReadable() const
bool QQmlListReference::isValid() const
const QMetaObject *QQmlListReference::listElementType() const
QObject *QQmlListReference::object() const
nullptr
。bool QQmlListReference::removeLast() const
bool QQmlListReference::replace(qsizetype index, QObject *object) const
[since 6.2]
qsizetype QQmlListReference::size() constbool QQmlListReference::operator==(const QQmlListReference &other) const
true
。只有通过复制赋值或复制构造函数从另一方面创建时,它们才被认为是相等的。
© 2024 Qt 公司 Ltd. 本文件中包含的文档贡献由其各自的所有者持有版权。本文件提供的文档是根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款许可的。Qt 及其相关标志是芬兰的 Qt 公司及其全球子公司和其他国家的商标。所有其他商标均为其各自所有者的财产。