Spec-Zone.ru › Qt 6.1

Класс 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)

Устанавливает сопоставленное значение, связанное с ключом, на сопоставленное, если это возможно. Вставляет новую запись, если она еще не существует, для заданного ключа. Если ключ не преобразуется в тип ключа, значение для ключа по умолчанию перезаписывается.

См. также 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.1/qassociativeiterable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API