QMetaEnum 类

QMetaEnum 类提供枚举类型的元数据。 更多...

头文件 #include <QMetaEnum>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共函数

const char *enumName() const
boolisFlag() const
boolisScoped() const
boolisValid() const
const char *key(int index) const
intkeyCount() const
intkeyToValue(const char *key, bool *ok = nullptr) const
intkeysToValue(const char *keys, bool *ok = nullptr) const
(since 6.6) QMetaTypemetaType() const
const char *name() const
const char *scope() const
intvalue(int index) const
const char *valueToKey(int value) const
QByteArrayvalueToKeys(int value) const

静态公共成员

QMetaEnumfromType()

详细描述

使用 name() 获取枚举名称。枚举的键(每个枚举项的名称)通过 key() 返回;使用 keyCount() 查找键的数量。 isFlag() 返回枚举是否用作标志,即其值可以用 OR 操作符组合。

转换函数 keyToValue()、valueToKey()、keysToValue() 和 valueToKeys() 允许在枚举或集合值的整数表示与其字面表示之间进行转换。函数 scope() 返回该枚举在声明时所属的类作用域。

另请参阅 QMetaObjectQMetaMethodQMetaProperty

成员函数文档

const char *QMetaEnum::enumName() const

返回标志的枚举名称(不含作用域)。

例如,Qt::AlignmentFlag 标志的枚举名称为 AlignmentFlag,但类型名称为 Alignment。非标志枚举具有相同的类型和枚举名称。

枚举名称与类型名称具有相同的范围。

另请参阅isValid() 和 name()。

[静态] 模板 <typename T> QMetaEnum QMetaEnum::fromType()

返回与模板参数中的类型对应的 QMetaEnum。枚举需要使用 Q_ENUM 声明。

bool QMetaEnum::isFlag() const

如果此枚举作为标志使用,则返回 true;否则返回 false。

作为标志使用时,枚举可以通过逻辑或运算符进行组合。

另请参阅keysToValue() 和 valueToKeys

bool QMetaEnum::isScoped() const

如果此枚举作为 C++11 枚举类声明,则返回 true;否则返回 false。

bool QMetaEnum::isValid() const

如果此枚举有效(具有名称),则返回 true;否则返回 false。

另请参阅name

const char *QMetaEnum::key(int index) const

返回具有给定 index 的键,如果不存在此键,则返回 nullptr

另请参阅keyCount()、value() 和 valueToKey

int QMetaEnum::keyCount() const

返回键的数量。

另请参阅key

int QMetaEnum::keyToValue(const char *key, bool *ok = nullptr) const

返回给定枚举 key 的整数值,如果 key 未定义,则返回 -1。

如果 key 未定义,则 *ok 设置为 false;否则 *ok 设置为 true。

对于标志类型,请使用 keysToValue

另请参阅valueToKeyisFlagkeysToValue

int QMetaEnum::keysToValue(const char *keys, bool *ok = nullptr) const

返回将 keys 的值组合起来(使用逻辑或运算符)得到的结果,如果 keys 未定义,则返回 -1。注意,keys 中的字符串必须用 '|' 分隔。

如果 keys 未定义,则 *ok 设置为 false;否则 *ok 设置为 true。

另请参阅isFlagvalueToKeyvalueToKeys

[since 6.6] QMetaType QMetaEnum::metaType() const

返回枚举的元类型。

如果此枚举所属的QMetaObject是用Qt 6.5或更早版本生成的,这将是一个无效的元类型。

注意:这是枚举本身的元类型,而不是其底层整型的元类型。您可以使用QMetaType::underlyingType()方法检索枚举底层类型的元类型。

此函数是在Qt 6.6中引入的。

const char *QMetaEnum::name() const

返回类型的名称(不包含作用域)。

例如,Qt::Key枚举的名字是Key,作用域是Qt

对于标志,此函数返回标志类型的名称,而不是枚举类型的名称。

另请参阅:isValid(),scope()和enumName()。

const char *QMetaEnum::scope() const

返回此枚举声明的作用域。

例如,Qt::AlignmentFlag枚举的作用域是Qt,名称是AlignmentFlag

另请参阅name

int QMetaEnum::value(int index) const

返回给定index的值;如果没有这样的值,则返回-1。

另请参阅:keyCount(),key()和keyToValue()。

const char *QMetaEnum::valueToKey(int value) const

返回用作给定枚举value名称的字符串,如果value未定义,则返回nullptr

对于标志类型,请使用valueToKeys()。

另请参阅:isFlag()和valueToKeys()。

QByteArray QMetaEnum::valueToKeys(int value) const

返回表示给定value的由'|'分隔的键的字节数组。

另请参阅:isFlag(),valueToKey()和keysToValue()。

© 2024 Qt公司。本文档中包含的文档贡献均为其各自所有者的版权。提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3条款许可的。Qt和相应的标志是芬兰的Qt公司及其在全世界范围内的商标。所有其他商标均为其各自所有者的财产。