Класс QAssociativeIterable
Класс QAssociativeIterable — это интерфейс итерирования для ассоциативного контейнера в QVariant. Подробнее...
| Заголовок: | #include <QAssociativeIterable> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| С момента: | Qt 5.2 |
| Наследует: | QIterable |
Публичные типы
| BidirectionalConstIterator | |
| BidirectionalIterator | |
| ForwardConstIterator | |
| ForwardIterator | |
| InputConstIterator | |
| InputIterator | |
| RandomAccessConstIterator | |
| RandomAccessIterator | |
| const_iterator | |
| iterator |
Публичные функции
| 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. Экземпляр QAssociativeIterable может быть извлечен из QVariant, если он может быть преобразован в QVariantHash или QVariantMap, или если была зарегистрирована пользовательская изменяемая виртуальная машина.
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.
Документация по типу члена
[alias] QAssociativeIterable::BidirectionalConstIterator
Предоставляет const_iterator с помощью std::bidirectional_iterator_tag.
[alias] QAssociativeIterable::BidirectionalIterator
Предоставляет итератор с помощью std::bidirectional_iterator_tag.
[alias] QAssociativeIterable::ForwardConstIterator
Предоставляет const_iterator с помощью std::forward_iterator_tag.
[alias] QAssociativeIterable::ForwardIterator
Предоставляет итератор с помощью std::forward_iterator_tag.
[alias] QAssociativeIterable::InputConstIterator
Предоставляет const_iterator с помощью std::input_iterator_tag.
[alias] QAssociativeIterable::InputIterator
Предоставляет итератор с помощью std::input_iterator_tag.
[alias] QAssociativeIterable::RandomAccessConstIterator
Предоставляет const_iterator с помощью std::random_access_iterator_tag.
[alias] QAssociativeIterable::RandomAccessIterator
Предоставляет итератор с помощью std::random_access_iterator_tag.
[alias] 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.
[alias, since 6.0] QAssociativeIterable::iterator
QAssociativeIterable::iterator позволяет итерироваться по контейнеру в QVariant.
QAssociativeIterable::iterator может быть создан только экземпляром QAssociativeIterable, и может быть использован подобно другим итераторам в стиле stl.
Этот typedef был введен в Qt 6.0.
См. также QAssociativeIterable.
Документация по функции-члену
bool QAssociativeIterable::containsKey(const QVariant &key)
Возвращает true , если контейнер содержит запись с заданным ключом, или false в противном случае. Если ключ не может быть преобразован в ожидаемый тип, возвращается false.
QAssociativeIterable::const_iterator QAssociativeIterable::find(const QVariant &key) const
Возвращает const_iterator, указывающий на элемент с заданным ключом, или конец контейнера, если ключ не существует. Если ключ не может быть преобразован в ожидаемый тип, возвращается конец контейнера.
void QAssociativeIterable::insertKey(const QVariant &key)
Вставляет новую запись с заданным ключом или сбрасывает сопоставленное значение любой существующей записи с заданным ключом на значение по умолчанию. Ключ приводится к ожидаемому типу: если он не может быть преобразован, вставляется значение по умолчанию.
QAssociativeIterable::iterator QAssociativeIterable::mutableFind(const QVariant &key)
Возвращает итератор, указывающий на элемент с заданным ключом, или конец контейнера, если ключ не существует. Если ключ не может быть преобразован в ожидаемый тип, возвращается конец контейнера.
void QAssociativeIterable::removeKey(const QVariant &key)
Удаляет запись с заданным ключом из контейнера. Ключ приводится к ожидаемому типу: если он не может быть преобразован, удаляется значение по умолчанию.
void QAssociativeIterable::setValue(const QVariant &key, const QVariant &mapped)
Устанавливает сопоставленное значение, связанное с ключом, на mapped, если это возможно. Вставляет новую запись, если она еще не существует, для данного ключа. Если ключ не может быть преобразован в тип ключа, значение для ключа, созданного по умолчанию, перезаписывается.
См. также value().
QVariant QAssociativeIterable::value(const QVariant &key) const
Возвращает сопоставленное значение по заданному ключу или созданное по умолчанию QVariant типа сопоставленного значения, если ключ не существует. Если ключ не может быть преобразован в тип ключа, возвращается сопоставленное значение, связанное с ключом, созданным по умолчанию.
См. также setValue().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qassociativeiterable.html