QMetaSequence 类

QMetaSequence 类允许访问逐个元素的容器,链接到更多...

头文件 #include <QMetaSequence>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
Qt 6.0
继承QMetaContainer

公共函数

voidaddValue(void *container, const void *value) const
voidaddValueAtBegin(void *container, const void *value) const
voidaddValueAtEnd(void *container, const void *value) const
boolcanAddValue() const
boolcanAddValueAtBegin() const
boolcanAddValueAtEnd() const
boolcanEraseRangeAtIterator() const
boolcanEraseValueAtIterator() const
boolcanGetValueAtConstIterator() const
boolcanGetValueAtIndex() const
boolcanGetValueAtIterator() const
boolcanInsertValueAtIterator() const
boolcanRemoveValue() const
boolcanRemoveValueAtBegin() const
boolcanRemoveValueAtEnd() const
boolcanSetValueAtIndex() const
boolcanSetValueAtIterator() const
voideraseRangeAtIterator(void *container, const void *iterator1, const void *iterator2) const
voideraseValueAtIterator(void *container, const void *iterator) const
voidinsertValueAtIterator(void *container, const void *iterator, const void *value) const
boolisSortable() const
voidremoveValue(void *container) const
voidremoveValueAtBegin(void *container) const
voidremoveValueAtEnd(void *container) const
voidsetValueAtIndex(void *container, qsizetype index, const void *value) const
voidsetValueAtIterator(const void *iterator, const void *value) const
voidvalueAtConstIterator(const void *iterator, void *result) const
voidvalueAtIndex(const void *container, qsizetype index, void *result) const
voidvalueAtIterator(const void *iterator, void *result) const
QMetaTypevalueMetaType() const

静态公有成员

(since 6.0) QMetaSequencefromContainer()

详细描述

该类提供了一组原始容器操作,使用void*作为操作数。这样,你可以在不知道其类型的情况下操作从一个Variant获取的通用容器。

各种方法的void*参数通常是通过使用相应容器或值类型的QVariant创建的,并调用其QVariant::data()或QVariant::constData()方法。然而,你也可以传递容器或值类型的对象的普通指针。

迭代器失效遵循底层容器的规则,并不在API中表达。因此,对于真正通用的容器,任何迭代器都应该在任何写操作后视为无效。

成员函数说明

void QMetaSequence::addValue(void *container, const void *value) const

如果可能,向container添加value。如果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()、isSortable()和removeValueAtBegin()。

void QMetaSequence::addValueAtEnd(void *container, const void *value) const

如果可能,将value添加到container的末尾。

另请参阅canAddValueAtEnd()、isSortable()和removeValueAtEnd()。

bool QMetaSequence::canAddValue() const

如果容器中可以添加值,则返回 true,否则返回 false

另请参阅 addValue() 和 isSortable

bool QMetaSequence::canAddValueAtBegin() const

如果使用 addValue() 添加的值可以被放置在容器的开始处,则返回 true,否则返回 false

另请参阅 addValueAtBegin() 和 canAddValueAtEnd

bool QMetaSequence::canAddValueAtEnd() const

如果使用 addValue() 添加的值可以被放置在容器的末尾,则返回 true,否则返回 false

另请参阅 addValueAtEnd() 和 canAddValueAtBegin

bool QMetaSequence::canEraseRangeAtIterator() const

如果可以在容器中从两个迭代器之间删除范围,则返回 true,否则返回 false

bool QMetaSequence::canEraseValueAtIterator() const

如果可以删除由非const迭代器指向的值,则返回 true,否则返回 false

另请参阅 hasIterator() 和 eraseValueAtIterator

bool QMetaSequence::canGetValueAtConstIterator() const

如果底层容器可以检索由const迭代器指向的值,则返回 true,否则返回 false

另请参阅 hasConstIterator() 和 valueAtConstIterator

bool QMetaSequence::canGetValueAtIndex() const

如果可以通过索引从容器中检索到值,则返回 true,否则返回 false

另请参阅 valueAtIndex

bool QMetaSequence::canGetValueAtIterator() const

如果底层容器可以检索由非const迭代器指向的值,则返回 true,否则返回 false

另请参阅 hasIterator() 和 valueAtIterator

bool QMetaSequence::canInsertValueAtIterator() const

如果底层容器可以在考虑由非const迭代器指向的位置的情况下插入新值,则返回 true

另请参阅 hasIterator() 和 insertValueAtIterator

bool QMetaSequence::canRemoveValue() const

如果可以从容器中移除值,则返回 true,否则返回 false

另请参阅 removeValue() 和 isSortable

bool QMetaSequence::canRemoveValueAtBegin() const

如果可以使用 removeValue() 从容器开始移除值,则返回 true,否则返回 false

另请参阅 removeValueAtBegin() 和 canRemoveValueAtEnd()。

bool QMetaSequence::canRemoveValueAtEnd() const

如果可以使用 removeValue() 从容器尾部移除值,则返回 true,否则返回 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

如果可能,从 container 中删除由迭代器 iterator1iterator2 之间的值范围。

另请参阅 canEraseValueAtIteratorbeginend

void QMetaSequence::eraseValueAtIterator(void *container, const void *iterator) const

如果可能,从 container 中删除由非常量迭代器 iterator 指向的值。

另请参阅 canEraseValueAtIteratorbeginend

[静态常量,自 6.0 以来] 模板 < typename T > QMetaSequence QMetaSequence::fromContainer()

返回与模板参数给定的类型相对应的 QMetaSequence

此函数从 Qt 6.0 开始引入。

void QMetaSequence::insertValueAtIterator(void *container, const void *iterator, const void *value) const

如果可能的话,将 value 插入到 container 中,考虑不接受 const 的 iterator。如果 canInsertValueAtIterator() 返回 false,则不插入 value。否则,如果 isSortable() 返回 true,则将值插入到由 iterator 所指向的值之前。否则,value 将被插入到未指定位置或根本不插入。在后一种情况下,将 iterator 作为提示。如果它指向 value 的正确位置,则操作可能比没有迭代器的 addValue() 操作更快。

另请参阅 canInsertValueAtIterator(),isSortable(),begin() 和 end()。

bool QMetaSequence::isSortable() const

如果底层容器是可排序的,则返回 true,否则返回 false。容器被认为是可排序的,如果向其添加的值被放置在定义的位置。向可排序容器插入或添加值将始终成功。向不可排序容器插入或添加值可能不会成功,例如,如果容器是一个已包含 valueQSet

另请参阅 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()。

void QMetaSequence::setValueAtIndex(void *container, qsizetype index, const void *value) const

如果可能的话,使用作为参数传递的 value 覆盖 containerindex 位置的值。

另请参阅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

如果可能,检索 containerindex 的值并将其放置在 result 指向的内存位置。

另请参阅setValueAtIndex() 和 canGetValueAtIndex

void QMetaSequence::valueAtIterator(const void *iterator, void *result) const

如果可能,检索由非常量 iterator 指向的值并将其存储在 result 指向的内存位置。

另请参阅setValueAtIterator(),canGetValueAtIterator(),begin() 和 end

QMetaType QMetaSequence::valueMetaType() const

返回存储在容器中的值的元类型。

© 2024 Qt 公司 Ltd。本文档中包含的贡献是各自所有者的版权。本文档受免费软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款所约束。Qt 及其标志是芬兰和/或世界各地 Qt 公司 Ltd 的商标。所有其他商标均为各自所有者的财产。