QMetaEnum 类
QMetaEnum 类提供枚举类型的元数据。 更多...
头文件 | #include <QMetaEnum> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
const char * | enumName() const |
bool | isFlag() const |
bool | isScoped() const |
bool | isValid() const |
const char * | key(int index) const |
int | keyCount() const |
int | keyToValue(const char *key, bool *ok = nullptr) const |
int | keysToValue(const char *keys, bool *ok = nullptr) const |
(since 6.6) QMetaType | metaType() const |
const char * | name() const |
const char * | scope() const |
int | value(int index) const |
const char * | valueToKey(int value) const |
QByteArray | valueToKeys(int value) const |
静态公共成员
QMetaEnum | fromType() |
详细描述
使用 name() 获取枚举名称。枚举的键(每个枚举项的名称)通过 key() 返回;使用 keyCount() 查找键的数量。 isFlag() 返回枚举是否用作标志,即其值可以用 OR 操作符组合。
转换函数 keyToValue()、valueToKey()、keysToValue() 和 valueToKeys() 允许在枚举或集合值的整数表示与其字面表示之间进行转换。函数 scope() 返回该枚举在声明时所属的类作用域。
另请参阅 QMetaObject、QMetaMethod 和 QMetaProperty。
成员函数文档
const char *QMetaEnum::enumName() const
返回标志的枚举名称(不含作用域)。
例如,Qt::AlignmentFlag 标志的枚举名称为 AlignmentFlag
,但类型名称为 Alignment
。非标志枚举具有相同的类型和枚举名称。
枚举名称与类型名称具有相同的范围。
[静态]
模板 <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。
另请参阅valueToKey、isFlag 和 keysToValue。
int QMetaEnum::keysToValue(const char *keys, bool *ok = nullptr) const
返回将 keys 的值组合起来(使用逻辑或运算符)得到的结果,如果 keys 未定义,则返回 -1。注意,keys 中的字符串必须用 '|' 分隔。
如果 keys 未定义,则 *ok 设置为 false;否则 *ok 设置为 true。
另请参阅isFlag、valueToKey 和 valueToKeys。
[since 6.6]
QMetaType QMetaEnum::metaType() const
返回枚举的元类型。
如果此枚举所属的QMetaObject是用Qt 6.5或更早版本生成的,这将是一个无效的元类型。
注意:这是枚举本身的元类型,而不是其底层整型的元类型。您可以使用QMetaType::underlyingType()方法检索枚举底层类型的元类型。
此函数是在Qt 6.6中引入的。
const char *QMetaEnum::name() const
返回类型的名称(不包含作用域)。
对于标志,此函数返回标志类型的名称,而不是枚举类型的名称。
另请参阅: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公司及其在全世界范围内的商标。所有其他商标均为其各自所有者的财产。