QAssociativeIterable 类
QAssociativeIterable 类是一个可迭代的接口,用于在 QVariant 中访问关联容器。 更多...
头文件 | #include <QAssociativeIterable> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QIterable |
公开类型
公开函数
bool | containsKey(const QVariant &key) |
QAssociativeIterable::const_iterator | find(const QVariant &key) const |
void | insertKey(const QVariant &key) |
QAssociativeIterable::iterator | mutableFind(const QVariant &key) |
void | removeKey(const QVariant &key) |
void | setValue(const QVariant &key, const QVariant &mapped) |
QVariant | value(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 公司的商标。所有其他商标均为其各自所有者的财产。