Класс QMetaSequence
Класс QMetaSequence позволяет получить доступ к последовательным контейнерам, не зная их типов. Подробнее...
| Заголовок: | #include <QMetaSequence> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| С момента: | Qt 6.0 |
| Наследует: | QMetaContainer |
Открытые функции
| void | addValue(void *container, const void *value) const |
| void | addValueAtBegin(void *container, const void *value) const |
| void | addValueAtEnd(void *container, const void *value) const |
| bool | canAddValue() const |
| bool | canAddValueAtBegin() const |
| bool | canAddValueAtEnd() const |
| bool | canEraseRangeAtIterator() const |
| bool | canEraseValueAtIterator() const |
| bool | canGetValueAtConstIterator() const |
| bool | canGetValueAtIndex() const |
| bool | canGetValueAtIterator() const |
| bool | canInsertValueAtIterator() const |
| bool | canRemoveValue() const |
| bool | canRemoveValueAtBegin() const |
| bool | canRemoveValueAtEnd() const |
| bool | canSetValueAtIndex() const |
| bool | canSetValueAtIterator() const |
| void | eraseRangeAtIterator(void *container, const void *iterator1, const void *iterator2) const |
| void | eraseValueAtIterator(void *container, const void *iterator) const |
| void | insertValueAtIterator(void *container, const void *iterator, const void *value) const |
| bool | isSortable() const |
| void | removeValue(void *container) const |
| void | removeValueAtBegin(void *container) const |
| void | removeValueAtEnd(void *container) const |
| void | setValueAtIndex(void *container, qsizetype index, const void *value) const |
| void | setValueAtIterator(const void *iterator, const void *value) const |
| void | valueAtConstIterator(const void *iterator, void *result) const |
| void | valueAtIndex(const void *container, qsizetype index, void *result) const |
| void | valueAtIterator(const void *iterator, void *result) const |
| QMetaType | valueMetaType() const |
Статические открытые члены
| QMetaSequence | fromContainer() |
Подробное описание
Класс предоставляет набор примитивных операций с контейнерами, используя void* в качестве операндов. Таким образом, вы можете манипулировать универсальным контейнером, полученным из QVariant, не зная его тип.
Аргументы void* в различных методах обычно создаются с помощью QVariant соответствующего типа контейнера или значения и вызова его методов QVariant::data() или QVariant::constData(). Однако вы также можете передать обычные указатели на объекты типа контейнера или значения.
Отмена итераторов соответствует правилам, установленным для базовых контейнеров, и не выражена в API. Таким образом, для действительно универсального контейнера любые итераторы следует считать недействительными после любой операции записи.
Документация по функциям-членам
void QMetaSequence::addValue(void *container, const void *value) const
Добавляет value в container, если это возможно. Если canAddValue() возвращает false, value не добавляется. В противном случае, если canAddValueAtEnd() возвращает true, value добавляется в конец container. В противном случае, если canAddValueAtBegin() возвращает true, value добавляется в начало контейнера. В противном случае значение добавляется в неопределенное место или вообще не добавляется. Последнее имеет место для добавления значений в неупорядоченный контейнер, например QSet.
См. также canAddValue(), canAddValueAtBegin(), canAddValueAtEnd(), isSortable() и removeValue().
void QMetaSequence::addValueAtBegin(void *container, const void *value) const
Добавляет value в начало container, если это возможно. Если canAddValueAtBegin() возвращает false, value не добавляется.
См. также canAddValueAtBegin(), isSortable() и removeValueAtBegin().
void QMetaSequence::addValueAtEnd(void *container, const void *value) const
Добавляет value в конец container, если это возможно. Если canAddValueAtEnd() возвращает false, value не добавляется.
См. также canAddValueAtEnd(), isSortable() и removeValueAtEnd().
bool QMetaSequence::canAddValue() const
Возвращает true если значения могут быть добавлены в контейнер, false в противном случае.
См. также addValue() и isSortable().
bool QMetaSequence::canAddValueAtBegin() const
Возвращает true если значения, добавленные с помощью addValue(), могут быть размещены в начале контейнера, в противном случае возвращает false.
См. также addValueAtBegin() и canAddValueAtEnd().
bool QMetaSequence::canAddValueAtEnd() const
Возвращает true если значения, добавленные с помощью addValue(), могут быть размещены в конце контейнера, в противном случае возвращает false.
См. также addValueAtEnd() и canAddValueAtBegin().
bool QMetaSequence::canEraseRangeAtIterator() const
Возвращает true если диапазон между двумя итераторами может быть удален из контейнера, false в противном случае.
bool QMetaSequence::canEraseValueAtIterator() const
Возвращает true если значение, на которое указывает неконстантный итератор, может быть удалено, false в противном случае.
См. также hasIterator() и eraseValueAtIterator().
bool QMetaSequence::canGetValueAtConstIterator() const
Возвращает true если базовый контейнер может извлечь значение, на которое указывает константный итератор, false в противном случае.
См. также hasConstIterator() и valueAtConstIterator().
bool QMetaSequence::canGetValueAtIndex() const
Возвращает true если значения могут быть извлечены из контейнера по индексу, в противном случае false.
См. также valueAtIndex().
bool QMetaSequence::canGetValueAtIterator() const
Возвращает true если базовый контейнер может извлечь значение, на которое указывает неконстантный итератор, false в противном случае.
См. также hasIterator() и valueAtIterator().
bool QMetaSequence::canInsertValueAtIterator() const
Возвращает true если базовый контейнер может вставить новое значение, учитывая местоположение, указанное неконстантным итератором.
См. также hasIterator() и insertValueAtIterator().
bool QMetaSequence::canRemoveValue() const
Возвращает true если значения могут быть удалены из контейнера, false в противном случае.
См. также removeValue() и isSortable().
bool QMetaSequence::canRemoveValueAtBegin() const
Возвращает true если значения могут быть удалены из начала контейнера с помощью removeValue(), в противном случае возвращает false.
См. также removeValueAtBegin() и canRemoveValueAtEnd().
bool QMetaSequence::canRemoveValueAtEnd() const
Возвращает true если значения могут быть удалены из конца контейнера с помощью removeValue(), в противном случае возвращает false.
См. также removeValueAtEnd() и canRemoveValueAtBegin().
bool QMetaSequence::canSetValueAtIndex() const
Возвращает true если значение может быть записано в контейнер по индексу, в противном случае false.
См. также setValueAtIndex().
bool QMetaSequence::canSetValueAtIterator() const
Возвращает true если базовый контейнер может записать в значение, на которое указывает неконстантный итератор, false в противном случае.
См. также hasIterator() и setValueAtIterator().
void QMetaSequence::eraseRangeAtIterator(void *container, const void *iterator1, const void *iterator2) const
Удаляет диапазон значений между итераторами iterator1 и iterator2 из container, если это возможно.
См. также canEraseValueAtIterator(), begin() и end().
void QMetaSequence::eraseValueAtIterator(void *container, const void *iterator) const
Удаляет значение, на которое указывает неконстантный iterator, из container, если это возможно.
См. также canEraseValueAtIterator(), begin() и end().
[static, since 6.0] template <typename T> QMetaSequence QMetaSequence::fromContainer()
Возвращает QMetaSequence, соответствующую типу, заданному в качестве шаблона параметра.
Эта функция была добавлена в Qt 6.0.
void QMetaSequence::insertValueAtIterator(void *container, const void *iterator, const void *value) const
Вставляет value в container, если это возможно, учитывая неконстантный iterator. Если canInsertValueAtIterator() возвращает false, то value не вставляется. В противном случае, если isSortable() возвращает true, то значение вставляется перед значением, на которое указывает iterator. В противном случае value вставляется в неопределенное место или не вставляется вообще. В последнем случае iterator используется как подсказка. Если он указывает на нужное место для value, операция может быть быстрее, чем addValue() без итератора.
См. также canInsertValueAtIterator(), isSortable(), begin() и end().
bool QMetaSequence::isSortable() const
Возвращает true если базовый контейнер сортируемый, в противном случае возвращает false. Контейнер считается сортируемым, если добавленные в него значения размещаются в определенном месте. Вставка или добавление в сортируемый контейнер всегда будут успешными. Вставка или добавление в несортируемый контейнер может не удаться, например, если контейнер — это QSet, который уже содержит вставляемое значение.
См. также addValue(), insertValueAtIterator(), canAddValueAtBegin(), canAddValueAtEnd(), canRemoveValueAtBegin() и canRemoveValueAtEnd().
void QMetaSequence::removeValue(void *container) const
Удаляет значение из container, если это возможно. Если canRemoveValue() возвращает false, то значение не удаляется. В противном случае, если canRemoveValueAtEnd() возвращает true, удаляется последнее значение в container. В противном случае, если canRemoveValueAtBegin() возвращает true, удаляется первое значение в container. В противном случае удаляется неопределенное значение или ничего.
См. также canRemoveValue(), canRemoveValueAtBegin(), canRemoveValueAtEnd(), isSortable() и addValue().
void QMetaSequence::removeValueAtBegin(void *container) const
Удаляет значение из начала container, если это возможно. Если canRemoveValueAtBegin() возвращает false, значение не удаляется.
См. также canRemoveValueAtBegin(), isSortable() и addValueAtBegin().
void QMetaSequence::removeValueAtEnd(void *container) const
Удаляет значение с конца container, если это возможно. Если canRemoveValueAtEnd() возвращает false, значение не удаляется.
См. также canRemoveValueAtEnd(), isSortable() и addValueAtEnd().
END_OF_DOCUMENT_MARKERvoid QMetaSequence::setValueAtIndex(void *container, qsizetype index, const void *value) const
Перезаписывает значение по индексу index в container с использованием переданного в качестве параметра значения value, если это возможно.
См. также valueAtIndex() и canSetValueAtIndex().
void QMetaSequence::setValueAtIterator(const void *iterator, const void *value) const
Записывает value в значение, на которое указывает неконстантный iterator, если это возможно.
См. также valueAtIterator(), canSetValueAtIterator(), begin() и end().
void QMetaSequence::valueAtConstIterator(const void *iterator, void *result) const
Возвращает значение, на которое указывает константный iterator, и сохраняет его в памяти по адресу, указанному result, если это возможно.
См. также canGetValueAtConstIterator(), constBegin() и constEnd().
void QMetaSequence::valueAtIndex(const void *container, qsizetype index, void *result) const
Возвращает значение по индексу index в container и помещает его в память по адресу, указанному result, если это возможно.
См. также setValueAtIndex() и canGetValueAtIndex().
void QMetaSequence::valueAtIterator(const void *iterator, void *result) const
Возвращает значение, на которое указывает неконстантный iterator, и сохраняет его в памяти по адресу, указанному result, если это возможно.
См. также setValueAtIterator(), canGetValueAtIterator(), begin() и end().
QMetaType QMetaSequence::valueMetaType() const
Возвращает тип метаданных для значений, хранящихся в контейнере.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qmetasequence.html