QAssociativeIterable 类

QAssociativeIterable 类是一个可迭代的接口,用于在 QVariant 中访问关联容器。 更多...

头文件 #include <QAssociativeIterable>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承 QIterable

公开类型

公开函数

boolcontainsKey(const QVariant &key)
QAssociativeIterable::const_iteratorfind(const QVariant &key) const
voidinsertKey(const QVariant &key)
QAssociativeIterable::iteratormutableFind(const QVariant &key)
voidremoveKey(const QVariant &key)
voidsetValue(const QVariant &key, const QVariant &mapped)
QVariantvalue(const QVariant &key) const

详细描述

此类允许通过多种方式访问存储在 QVariant 中的关联容器元素。如果可以将 QVariant 转换为 QVariantHash 或 QVariantMap 或者已注册自定义可变视图,则可以从 QVariant 中提取 QAssociativeIterable 实例。

QHash<int, QString> mapping;
mapping.insert(7, "Seven");
mapping.insert(11, "Eleven");
mapping.insert(42, "Forty-two");

QVariant variant = QVariant::fromValue(mapping);
if (variant.canConvert<QVariantHash>()) {
    QAssociativeIterable iterable = variant.value<QAssociativeIterable>();
    // Can use foreach over the values:
    foreach (const QVariant &v, iterable) {
        qDebug() << v;
    }
    // Can use C++11 range-for over the values:
    for (const QVariant &v : iterable) {
        qDebug() << v;
    }
    // Can use iterators:
    QAssociativeIterable::const_iterator it = iterable.begin();
    const QAssociativeIterable::const_iterator end = iterable.end();
    for ( ; it != end; ++it) {
        qDebug() << *it; // The current value
        qDebug() << it.key();
        qDebug() << it.value();
    }
}

在迭代容器之前不会复制容器本身。

另请参阅QVariant

成员类型文档

[别名] QAssociativeIterable::BidirectionalConstIterator

使用 std::bidirectional_iterator_tag 提供一个 const_iterator。

[别名] QAssociativeIterable::BidirectionalIterator

使用 std::bidirectional_iterator_tag 提供一个迭代器。

[别名] QAssociativeIterable::ForwardConstIterator

使用 std::forward_iterator_tag 提供一个 const_iterator。

[别名] QAssociativeIterable::ForwardIterator

使用 std::forward_iterator_tag 提供一个迭代器。

[别名] QAssociativeIterable::InputConstIterator

使用 std::input_iterator_tag 提供了一个 const_iterator

[别名] QAssociativeIterable::InputIterator

使用 std::input_iterator_tag 提供了一个迭代器。

[别名] QAssociativeIterable::RandomAccessConstIterator

使用 std::random_access_iterator_tag 提供了一个 const_iterator

[别名] QAssociativeIterable::RandomAccessIterator

使用 std::random_access_iterator_tag 提供了一个迭代器。

[别名] QAssociativeIterable::const_iterator

QAssociativeIterable::const_iterator 允许在 QVariant 容器中迭代。

QAssociativeIterable::const_iterator 只能由一个 QAssociativeIterable 实例创建,并且可以以类似于其他 STL 样式迭代器的方式使用。

QHash<int, QString> mapping;
mapping.insert(7, "Seven");
mapping.insert(11, "Eleven");
mapping.insert(42, "Forty-two");

QVariant variant = QVariant::fromValue(mapping);
if (variant.canConvert<QVariantHash>()) {
    QAssociativeIterable iterable = variant.value<QAssociativeIterable>();
    // Can use foreach over the values:
    foreach (const QVariant &v, iterable) {
        qDebug() << v;
    }
    // Can use C++11 range-for over the values:
    for (const QVariant &v : iterable) {
        qDebug() << v;
    }
    // Can use iterators:
    QAssociativeIterable::const_iterator it = iterable.begin();
    const QAssociativeIterable::const_iterator end = iterable.end();
    for ( ; it != end; ++it) {
        qDebug() << *it; // The current value
        qDebug() << it.key();
        qDebug() << it.value();
    }
}

另请参阅QAssociativeIterable

[别名, 自 6.0 版本以来] QAssociativeIterable::iterator

QAssociativeIterable::iterator 允许在 QVariant 容器中迭代。

QAssociativeIterable::iterator 只能由一个 QAssociativeIterable 实例创建,并且可以以类似于其他 STL 样式迭代器的方式使用。

这个typedef是在Qt 6.0中引入的。

另请参阅QAssociativeIterable

成员函数说明

bool QAssociativeIterable::containsKey(const QVariant &key)

如果在容器中有一个具有给定 key 的条目,则返回 true,否则返回 false。如果 key 不能转换为期望的类型,则返回 false

QAssociativeIterable::const_iterator QAssociativeIterable::find(const QVariant &key) const

检索一个指向给定 key 的元素的 const_iterator,如果该键不存在,则指向容器的末尾。如果 key 不能转换为期望的类型,则返回容器的末尾。

void QAssociativeIterable::insertKey(const QVariant &key)

使用给定的 key 插入一个新条目,或将具有给定 key 的任何现有条目的映射值重置为默认构建的映射值。强制将 key 转换为期望的类型:如果无法转换,则插入默认值。

QAssociativeIterable::iterator QAssociativeIterable::mutableFind(const QVariant &key)

获取指向给定 key 对应元素的迭代器,如果该键不存在,则指向容器末尾。如果 key 无法转换为期望的类型,将返回容器末尾。

void QAssociativeIterable::removeKey(const QVariant &key)

从容器中移除具有给定 key 的条目。将 key 强制转换为期望的类型:如果不能转换,则移除默认值。

void QAssociativeIterable::setValue(const QVariant &key, const QVariant &mapped)

如果可能,将 key 相关联的映射值设置为 mapped。如果不存在,则为新 key 插入新条目。如果 key 无法转换为键类型,将覆盖使用默认构造函数创建的关键类型的值。

另请参阅 value().

QVariant QAssociativeIterable::value(const QVariant &key) const

获取给定 key 的映射值,如果键不存在,则返回与地图类型关联的默认构建的 QVariant。如果 key 无法转换为键类型,则返回默认构建的键相关联的映射值。

另请参阅 setValue().

© 2024 Qt 公司有限公司。本文档中的文档贡献是各自所有者的版权。本文档是根据自由软件基金会发布并由它出版的 GNU 自由文档许可协议版本 1.3 的条款提供的。Qt 和相关标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。