在本页

QMetaAssociation Class

QMetaAssociation 类允许对关联容器进行类型擦除访问。更多

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

该类可等价比较

公共类型

(since 6.11) class Iterable

公共函数

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* 作为操作数,提供了许多原始的容器操作。这样,您就可以在不知道变量类型的情况下操作从变量中获取的通用容器。

QMetaAssociation 既包括具有映射值的容器(如QMapQHash ),也包括只持有键的容器(如QSet )。

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

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

另请参见 QMetaContainer,QMetaSequence,QIterableQIterator

成员函数文档

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() 从非const迭代器中获取键值,则返回true ,否则返回false

另请参见 keyAtIterator() 。

bool QMetaAssociation::canGetMappedAtConstIterator() const

如果可以使用mappedAtConstIterator() 从常量迭代器中获取映射值,则返回true ,否则返回false

另请参见 mappedAtConstIterator()。

bool QMetaAssociation::canGetMappedAtIterator() const

如果可以使用mappedAtIterator() 从非常数迭代器中获取映射值,则返回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

如果可以使用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

如果可能,返回指向containerkey 条目的常量迭代器。如果入口不存在,则创建一个指向container 末尾的常量迭代器。如果无法创建常量迭代器,则返回nullptr

必须使用destroyConstIterator() 销毁常量迭代器。

另请参阅 canCreateConstIteratorAtKey(),constBegin(),constEnd() 和destroyConstIterator().

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

如果可能,返回指向containerkey 条目的非常数迭代器。如果入口不存在,则创建一个指向container 末尾的非const迭代器。如果无法创建非const迭代器,则返回nullptr

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

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

读取非constiterator 指向的键值,并尽可能将其存储到key 指向的内存位置。

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

QMetaType QMetaAssociation::keyMetaType() const

返回容器中键的元类型。

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

读取常量iterator 指向的映射值,并尽可能将其存储到mapped 指向的内存位置。

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

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

读取非constiterator 指向的映射值,并尽可能将其存储到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

如果可能,从container 中删除key 及其相关映射值。

另请参阅 canRemoveKey().

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

如果可能,将mapped 值写入由非常数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.