QJSValueIterator 类

QJSValueIterator 类提供了一个 Java 风格的迭代器,用于遍历 QJSValue。更多...

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

公共函数

QJSValueIterator(const QJSValue &object)
~QJSValueIterator()
boolhasNext() const
QStringname() const
boolnext()
QJSValuevalue() const
QJSValueIterator &operator=(QJSValue &object)

详细描述

QJSValueIterator 构造函数接受一个 QJSValue 作为参数。构造后,迭代器位于属性序列的最开始位置。以下是遍历 QJSValue 中所有属性的示例

QJSValue object;
...
QJSValueIterator it(object);
while (it.hasNext()) {
    it.next();
    qDebug() << it.name() << ": " << it.value().toString();
}

next() 方法可以推进迭代器。name() 和 value() 函数返回上一次跳过的项目的名称和值。

请注意,QJSValueIterator 仅遍历 QJSValue 的自身属性;即它不会遵循原型链。您可以使用以下循环来遵循原型链

QJSValue obj = ...; // the object to iterate over
while (obj.isObject()) {
    QJSValueIterator it(obj);
    while (it.hasNext()) {
        it.next();
        qDebug() << it.name();
    }
    obj = obj.prototype();
}

另请参阅 QJSValue::property().

成员函数文档

QJSValueIterator::QJSValueIterator(const QJSValue &object)

构建用于遍历 object 的迭代器。迭代器被设置为属性序列的起始位置(在第一个属性之前)。

[noexcept] QJSValueIterator::~QJSValueIterator()

销毁迭代器。

bool QJSValueIterator::hasNext() const

如果迭代器前方至少有一个项目(即迭代器不在属性序列的末尾),则返回 true;否则返回 false。

另请参阅 next().

QString QJSValueIterator::name() const

使用 next() 返回上一次跳过的属性的名称。

另请参阅 value().

bool QJSValueIterator::next()

通过一个位置推进迭代器。如果迭代器前方至少有一个项目(即迭代器不在属性序列的末尾),则返回true;否则返回false。

另请参阅hasNext() 和 name()。

QJSValue QJSValueIterator::value() const

返回使用 next() 跳过的最后一个属性的值。

另请参阅name()。

QJSValueIterator &QJSValueIterator::operator=(QJSValue &object)

使迭代器在 object 上操作。迭代器设置为属性序列的前面(在第一个属性之前)。

© 2024 Qt公司有限。此处包含的文档贡献归各自的拥有者所有。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可协议第1.3版许可的。Qt及其相关标志是芬兰以及世界其他国家的Qt公司商标。所有其他商标均为各自拥有者的财产。