QMetaEnum Class
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 。非标记枚举的类型名和枚举名相同。
枚举名的作用域与类型名相同。
[static] template <typename T> QMetaEnum QMetaEnum::fromType()
返回与模板参数中的类型相对应的QMetaEnum 。枚举需要用Q_ENUM 声明。
bool QMetaEnum::isFlag() const
如果该枚举器用作标志,则返回true ;否则返回 false。
作为标志使用时,可以使用 OR 运算符组合枚举器。
另请参阅 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
使用 OR 运算符将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
返回类型的名称(不含作用域)。
例如,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()。
© 2025 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.