QAssociativeIterable Class
The QAssociativeIterable class is an iterable interface for an associative container in a QVariant. More...
Header: | #include <QAssociativeIterable> |
CMake: | find_package(Qt6 COMPONENT Core) target_link_libraries(mytarget PUBLIC Qt::Core) |
qmake: | QT += core |
Since: | Qt 5.2 |
Inherits: | QIterable |
Public Types
(alias) | BidirectionalConstIterator |
(alias) | BidirectionalIterator |
(alias) | ForwardConstIterator |
(alias) | ForwardIterator |
(alias) | InputConstIterator |
(alias) | InputIterator |
(alias) | RandomAccessConstIterator |
(alias) | RandomAccessIterator |
(alias) | const_iterator |
(alias) | iterator |
Public Functions
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 |
Detailed Description
This class allows several methods of accessing the elements of an associative container held within a QVariant. An instance of QAssociativeIterable can be extracted from a QVariant if it can be converted to a QVariantHash or QVariantMap or if a custom mutable view has been registered.
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(); } }
The container itself is not copied before iterating over it.
See also QVariant.
Member Type Documentation
[alias]
QAssociativeIterable::BidirectionalConstIterator
This is a type alias for QTaggedIterator<const_iterator, std::bidirectional_iterator_tag>.
Exposes a const_iterator using std::bidirectional_iterator_tag.
[alias]
QAssociativeIterable::BidirectionalIterator
This is a type alias for QTaggedIterator<iterator, std::bidirectional_iterator_tag>.
Exposes an iterator using std::bidirectional_iterator_tag.
[alias]
QAssociativeIterable::ForwardConstIterator
This is a type alias for QTaggedIterator<const_iterator, std::forward_iterator_tag>.
Exposes a const_iterator using std::forward_iterator_tag.
[alias]
QAssociativeIterable::ForwardIterator
This is a type alias for QTaggedIterator<iterator, std::forward_iterator_tag>.
Exposes an iterator using std::forward_iterator_tag.
[alias]
QAssociativeIterable::InputConstIterator
This is a type alias for QTaggedIterator<const_iterator, std::input_iterator_tag>.
Exposes a const_iterator using std::input_iterator_tag.
[alias]
QAssociativeIterable::InputIterator
This is a type alias for QTaggedIterator<iterator, std::input_iterator_tag>.
Exposes an iterator using std::input_iterator_tag.
[alias]
QAssociativeIterable::RandomAccessConstIterator
This is a type alias for QTaggedIterator<const_iterator, std::random_access_iterator_tag>.
Exposes a const_iterator using std::random_access_iterator_tag.
[alias]
QAssociativeIterable::RandomAccessIterator
This is a type alias for QTaggedIterator<iterator, std::random_access_iterator_tag>.
Exposes an iterator using std::random_access_iterator_tag.
[alias]
QAssociativeIterable::const_iterator
This is a type alias for QTaggedIterator<QAssociativeConstIterator, void>.
The QAssociativeIterable::const_iterator allows iteration over a container in a QVariant.
A QAssociativeIterable::const_iterator can only be created by a QAssociativeIterable instance, and can be used in a way similar to other stl-style iterators.
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(); } }
See also QAssociativeIterable.
[alias, since 6.0]
QAssociativeIterable::iterator
This is a type alias for QTaggedIterator<QAssociativeIterator, void>.
The QAssociativeIterable::iterator allows iteration over a container in a QVariant.
A QAssociativeIterable::iterator can only be created by a QAssociativeIterable instance, and can be used in a way similar to other stl-style iterators.
This alias was introduced in Qt 6.0.
See also QAssociativeIterable.
Member Function Documentation
bool QAssociativeIterable::containsKey(const QVariant &key)
Returns true
if the container has an entry with the given key, or false
otherwise. If the key isn't convertible to the expected type, false
is returned.
QAssociativeIterable::const_iterator QAssociativeIterable::find(const QVariant &key) const
Retrieves a const_iterator pointing to the element at the given key, or the end of the container if that key does not exist. If the key isn't convertible to the expected type, the end of the container is returned.
void QAssociativeIterable::insertKey(const QVariant &key)
Inserts a new entry with the given key, or resets the mapped value of any existing entry with the given key to the default constructed mapped value. The key is coerced to the expected type: If it isn't convertible, a default value is inserted.
QAssociativeIterable::iterator QAssociativeIterable::mutableFind(const QVariant &key)
Retrieves an iterator pointing to the element at the given key, or the end of the container if that key does not exist. If the key isn't convertible to the expected type, the end of the container is returned.
void QAssociativeIterable::removeKey(const QVariant &key)
Removes the entry with the given key from the container. The key is coerced to the expected type: If it isn't convertible, the default value is removed.
void QAssociativeIterable::setValue(const QVariant &key, const QVariant &mapped)
Sets the mapped value associated with key to mapped, if possible. Inserts a new entry if none exists yet, for the given key. If the key is not convertible to the key type, the value for the default-constructed key type is overwritten.
See also value().
QVariant QAssociativeIterable::value(const QVariant &key) const
Retrieves the mapped value at the given key, or a default-constructed QVariant of the mapped type, if the key does not exist. If the key is not convertible to the key type, the mapped value associated with the default-constructed key is returned.
See also setValue().