本页内容

QMetaAssociation Class

QMetaAssociation 类允许以类型擦除的方式访问关联容器。更多内容...

头文件: #include <QMetaAssociation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
自: Qt 6.0
继承自: QMetaContainer

QMetaAssociation 比较

类别可比较类型
相等性QMetaAssociation

公共类型

(since 6.11) class Iterable

公共函数

QMetaAssociation()
bool canContainsKey() const
bool canCreateConstIteratorAtKey() const
bool canCreateIteratorAtKey() const
bool canGetKeyAtConstIterator() const
bool canGetKeyAtIterator() const
bool canGetMappedAtConstIterator() const
bool canGetMappedAtIterator() const
bool canGetMappedAtKey() const
bool canInsertKey() const
bool canRemoveKey() const
bool canSetMappedAtIterator() const
bool canSetMappedAtKey() const
bool containsKey(const void *container, const void *key) const
void *createConstIteratorAtKey(const void *container, const void *key) const
void *createIteratorAtKey(void *container, const void *key) const
void insertKey(void *container, const void *key) const
void keyAtConstIterator(const void *iterator, void *key) const
void keyAtIterator(const void *iterator, void *key) const
QMetaType keyMetaType() const
void mappedAtConstIterator(const void *iterator, void *mapped) const
void mappedAtIterator(const void *iterator, void *mapped) const
void mappedAtKey(const void *container, const void *key, void *mapped) const
QMetaType mappedMetaType() const
void removeKey(void *container, const void *key) const
void setMappedAtIterator(const void *iterator, const void *mapped) const
void setMappedAtKey(void *container, const void *key, const void *mapped) const

静态公共成员

(since 6.0) QMetaAssociation fromContainer()
bool operator!=(const QMetaAssociation &lhs, const QMetaAssociation &rhs)
bool operator==(const QMetaAssociation &lhs, const QMetaAssociation &rhs)

详细说明

该类提供了一系列以 void* 为操作数的原始容器操作。通过这种方式,您可以在无需了解其类型的情况下,对从 Variant 中检索到的泛型容器进行操作。

QMetaAssociation 既涵盖了具有映射值的容器(如QMap 或QHash ),也涵盖了仅包含键的容器(如QSet )。

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

迭代器的失效遵循底层容器规定的规则,API 中未作明确说明。因此,对于真正的泛型容器,在任何写入操作之后,所有迭代器都应被视为无效。

另请参阅 QMetaContainer 、QMetaSequence 、QIterable 以及QIterator 。

成员函数文档

[constexpr noexcept default] QMetaAssociation::QMetaAssociation()

默认——构造一个QMetaAssociation 实例。

bool QMetaAssociation::canContainsKey() const

如果可以通过containsKey()对容器进行键查询,则返回true ;否则返回false 。

bool QMetaAssociation::canCreateConstIteratorAtKey() const

如果可以使用 `createConstIteratorAtKey()` 创建一个指向容器中某个条目的常量迭代器,则返回 `true `;否则返回 `false`。

bool QMetaAssociation::canCreateIteratorAtKey() const

如果可以使用createIteratorAtKey() 创建一个指向容器中某条条目的迭代器,则返回true ;否则返回 false。

另请参阅 createIteratorAtKey()。

bool QMetaAssociation::canGetKeyAtConstIterator() const

如果可以通过 `keyAtConstIterator()` 从常量迭代器中检索到键,则返回 `true `;否则返回 `false`。

另请参见 keyAtConstIterator()。

bool QMetaAssociation::canGetKeyAtIterator() const

如果可以通过keyAtIterator() 从非常量迭代器中检索到键,则返回true ;否则返回false 。

另请参阅 keyAtIterator()。

bool QMetaAssociation::canGetMappedAtConstIterator() const

如果可以通过 `mappedAtConstIterator()` 从常量迭代器中检索到映射值,则返回 `true `;否则返回 `false`。

另请参阅 mappedAtConstIterator()。

bool QMetaAssociation::canGetMappedAtIterator() const

如果可以通过mappedAtIterator() 从非 const 迭代器中检索到映射值,则返回true ;否则返回false 。

另请参阅 mappedAtIterator()。

bool QMetaAssociation::canGetMappedAtKey() const

如果可以通过mappedAtKey() 查询容器的值,则返回true ;否则返回false 。

bool QMetaAssociation::canInsertKey() const

如果可以使用 `insertKey()` 将键添加到容器中,则返回 `true `;否则返回 `false`。

另请参阅 insertKey()。

bool QMetaAssociation::canRemoveKey() const

如果可以使用 `removeKey()` 从容器中移除键,则返回 `true `;否则返回 `false`。

另请参阅 removeKey()。

bool QMetaAssociation::canSetMappedAtIterator() const

如果可以通过非const迭代器使用setMappedAtIterator()设置映射值,则返回true ;否则返回false 。

另请参阅 setMappedAtIterator()。

bool QMetaAssociation::canSetMappedAtKey() const

如果可以使用 `setMappedAtKey()` 修改容器中的映射值,则返回 `true `;否则返回 `false`。

另请参阅 setMappedAtKey()。

bool QMetaAssociation::containsKey(const void *container, const void *key) const

如果可以查询container 中的键且其中包含key ,则返回true ;否则返回false 。

另请参阅 canContainsKey()。

void *QMetaAssociation::createConstIteratorAtKey(const void *container, const void *key) const

返回一个指向“key ”在“container ”中条目的常量迭代器(如果可能)。如果该条目不存在,则创建一个指向“container ”末尾的常量迭代器。如果无法创建常量迭代器,则返回nullptr 。

该 const 迭代器必须使用destroyConstIterator() 进行销毁。

另请参阅 canCreateConstIteratorAtKey()、constBegin()、constEnd() 以及destroyConstIterator()。

void *QMetaAssociation::createIteratorAtKey(void *container, const void *key) const

返回一个指向container 中key 条目的非const迭代器(如果可能的话)。如果该条目不存在,则创建一个指向container 末尾的非const迭代器。如果无法创建任何非const迭代器,则返回nullptr 。

该非 const 迭代器必须使用destroyIterator() 进行销毁。

另请参阅 canCreateIteratorAtKey()、begin()、end() 以及destroyIterator()。

[static constexpr, since 6.0] template <typename T> QMetaAssociation QMetaAssociation::fromContainer()

返回与作为模板参数给定的类型相对应的QMetaAssociation 。

该函数在 Qt 6.0 中引入。

void QMetaAssociation::insertKey(void *container, const void *key) const

如果可能,将key 插入到container 中。如果容器包含映射值,则会为key 关联一个默认创建的映射值。

另请参阅 canInsertKey()。

void QMetaAssociation::keyAtConstIterator(const void *iterator, void *key) const

若可行,则检索由常量iterator 指向的键,并将其存储在由key 指向的内存位置中。

另请参阅 canGetKeyAtConstIterator()、constBegin()、constEnd() 和createConstIteratorAtKey()。

void QMetaAssociation::keyAtIterator(const void *iterator, void *key) const

若可行,则检索由非const类型的iterator 所指向的键,并将其存储在由key 所指向的内存位置中。

另请参阅 canGetKeyAtIterator()、begin()、end() 和createIteratorAtKey()。

QMetaType QMetaAssociation::keyMetaType() const

返回容器中键的元数据类型。

void QMetaAssociation::mappedAtConstIterator(const void *iterator, void *mapped) const

若条件允许,则检索由 constiterator 所指向的映射值,并将其存储在mapped 所指向的内存位置中。

另请参阅 canGetMappedAtConstIterator()、constBegin()、constEnd() 和createConstIteratorAtKey()。

void QMetaAssociation::mappedAtIterator(const void *iterator, void *mapped) const

若可行,则检索由非常量iterator 所指向的映射值,并将其存储到由mapped 所指向的内存位置中。

另请参阅 setMappedAtIterator()、canGetMappedAtIterator()、begin()、end() 以及createIteratorAtKey()。

void QMetaAssociation::mappedAtKey(const void *container, const void *key, void *mapped) const

检索与container 中key 关联的映射值,并将其写入mapped 所指向的内存位置(如果可行的话)。

另请参阅 setMappedAtKey() 和canGetMappedAtKey()。

QMetaType QMetaAssociation::mappedMetaType() const

返回容器中已映射值的元数据类型。

void QMetaAssociation::removeKey(void *container, const void *key) const

如果可能,将key 及其关联的映射值从container 中移除。

另请参阅 canRemoveKey()。

void QMetaAssociation::setMappedAtIterator(const void *iterator, const void *mapped) const

如果可能,将mapped 的值写入由非const类型的iterator 所指向的容器位置。

另请参阅 mappedAtIterator()、canSetMappedAtIterator()、begin()、end() 以及createIteratorAtKey()。

void QMetaAssociation::setMappedAtKey(void *container, const void *key, const void *mapped) const

如果可行,则使用作为参数传递的mapped 值,覆盖container 中与key 关联的值。

另请参阅 mappedAtKey() 和canSetMappedAtKey()。

相关非成员

[noexcept] bool operator!=(const QMetaAssociation &lhs, const QMetaAssociation &rhs)

如果QMetaAssociation lhs 表示的容器类型与QMetaAssociation rhs 不同,则返回true ;否则返回false 。

[noexcept] bool operator==(const QMetaAssociation &lhs, const QMetaAssociation &rhs)

如果QMetaAssociation lhs 表示与QMetaAssociation rhs 相同的容器类型,则返回true ;否则返回false 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.