QMetaAssociation::Iterable Class
class QMetaAssociation::IterableQMetaAssociation::Iterable 是QVariant 中关联容器的可迭代接口。更多内容...
该类在 Qt 6.11 中首次引入。
公共类型
(since 6.11) class | ConstIterator |
(since 6.11) class | Iterator |
| BidirectionalConstIterator | |
| BidirectionalIterator | |
| ForwardConstIterator | |
| ForwardIterator | |
| InputConstIterator | |
| InputIterator | |
| RandomAccessConstIterator | |
| RandomAccessIterator |
公共函数
| bool | containsKey(const QVariant &key) const |
| QMetaAssociation::Iterable::ConstIterator | find(const QVariant &key) const |
| void | insertKey(const QVariant &key) |
| QMetaAssociation::Iterable::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 ,或者已注册了自定义的可变视图,则可以从中提取QMetaAssociation::Iterable 的实例。
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>()) {
QMetaAssociation::Iterable iterable=variant.value<QMetaAssociation::Iterable>();
// 可以对这些值使用 C++11 的范围 for 循环:
for(constQVariant&v: iterable) {
qDebug() << v;
}
// 可以使用迭代器:
QMetaAssociation::Iterable::const_iteratorit=iterable.begin();
constQMetaAssociation::Iterable::const_iteratorend=iterable.end();
for( ; it!=end;++it) {
qDebug() << *it; // The current value
qDebug() << it.key();
qDebug() << it.value();
}
}在遍历容器之前,不会对容器本身进行复制。
另请参阅 QVariant 。
成员类型文档
[alias] Iterable::BidirectionalConstIterator
使用 std::bidirectional_iterator_tag 公开一个 const_iterator。
[alias] Iterable::BidirectionalIterator
使用 std::bidirectional_iterator_tag 暴露一个迭代器。
[alias] Iterable::ForwardConstIterator
使用 std::forward_iterator_tag 公开一个 const_iterator。
[alias] Iterable::ForwardIterator
使用 std::forward_iterator_tag 暴露一个迭代器。
[alias] Iterable::InputConstIterator
使用 std::input_iterator_tag 公开一个 const_iterator。
[alias] Iterable::InputIterator
使用 std::input_iterator_tag 暴露一个迭代器。
[alias] Iterable::RandomAccessConstIterator
使用 std::random_access_iterator_tag 暴露一个 const_iterator。
[alias] Iterable::RandomAccessIterator
使用 std::random_access_iterator_tag 公开一个迭代器。
成员函数文档
bool Iterable::containsKey(const QVariant &key) const
如果容器中存在一个与给定的key 匹配的条目,则返回true ;否则返回false 。如果key 无法转换为预期类型,则返回false 。
QMetaAssociation::Iterable::ConstIterator Iterable::find(const QVariant &key) const
获取一个指向给定key 处元素的ConstIterator ,如果该键不存在,则返回容器的末尾。如果key 无法转换为预期类型,则返回容器的末尾。
void Iterable::insertKey(const QVariant &key)
插入一个包含给定key 的新条目,或将任何现有条目中包含给定key 的映射值重置为默认构造的映射值。key 将被强制转换为预期类型:如果无法转换,则插入默认值。
QMetaAssociation::Iterable::Iterator Iterable::mutableFind(const QVariant &key)
获取一个迭代器,该迭代器指向位于给定key 处的元素;如果该键不存在,则返回容器的末尾。如果key 无法转换为预期类型,则返回容器的末尾。
void Iterable::removeKey(const QVariant &key)
从容器中移除具有指定key 的条目。key 会被强制转换为预期类型:如果无法转换,则移除其默认值。
void Iterable::setValue(const QVariant &key, const QVariant &mapped)
将与key 关联的映射值设置为mapped (如果可能)。如果尚未存在,则为给定的key 插入一个新条目。如果key 无法转换为键类型,则会覆盖默认构造的键类型的值。
另请参阅 value()。
QVariant Iterable::value(const QVariant &key) const
获取位于给定key 处的映射值;如果该键不存在,则返回映射类型的默认构造实例的QVariant 。如果key 无法转换为键的类型,则返回与该默认构造键关联的映射值。
另请参阅 setValue()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.