QMetaSequence 类
QMetaSequence 类允许访问逐个元素的容器,链接到更多...
头文件 | #include <QMetaSequence> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) 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 |
静态公有成员
(since 6.0) QMetaSequence | fromContainer() |
详细描述
该类提供了一组原始容器操作,使用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 中删除由迭代器 iterator1 和 iterator2 之间的值范围。
另请参阅 canEraseValueAtIterator、begin 和 end。
void QMetaSequence::eraseValueAtIterator(void *container, const void *iterator) const
如果可能,从 container 中删除由非常量迭代器 iterator 指向的值。
另请参阅 canEraseValueAtIterator、begin 和 end。
[静态常量,自 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
。容器被认为是可排序的,如果向其添加的值被放置在定义的位置。向可排序容器插入或添加值将始终成功。向不可排序容器插入或添加值可能不会成功,例如,如果容器是一个已包含 value 的 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()。
void QMetaSequence::setValueAtIndex(void *container, qsizetype index, const void *value) const
如果可能的话,使用作为参数传递的 value 覆盖 container 中 index 位置的值。
另请参阅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
如果可能,检索 container 中 index 的值并将其放置在 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 的商标。所有其他商标均为各自所有者的财产。