QMetaEnum类提供有关枚举器的元数据。
头文件:
#include <QMetaEnum>
cmake:
find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake:
QT += core
详细说明
使用name()作为枚举器的名称。枚举器的键(每个枚举项的名称)由key()返回;使用keyCount()查找键的数目。isFlag()返回枚举数是否要用作标志,这意味着可以使用OR运算符组合其值。
转换函数keyToValue()、valueToKey()、keysToValue()和valueToKeys()允许在枚举或集合值的整数表示形式与其文字表示形式之间进行转换。函数的作用域是:返回枚举器声明的类作用域。
成员函数
enumName
[since 5.12]const char
*
QMetaEnum::enumName() const
返回标志的枚举名称(无作用域)。
比如:Qt :: AlignmentFlag标志具有AlignmentFlag作为枚举名称,但Alignment作为类型名称。非标记枚举具有相同的类型和枚举名称。
枚举名称与类型名称具有相同的作用域。
此功能在Qt 5.12中引入。
另请参见isValid()
和name()
fromType
[static, since 5.5]
template<typename T>
QMetaEnum
QMetaEnum::fromType()
返回与template参数中的类型相对应的QMetaEnum。枚举需要用Q_ENUM声明。
此功能是在Qt 5.5中引入的。
isFlag
bool QMetaEnum::isFlag() const
如果此枚举数用作标志,则返回true;否则返回false。
当用作标志时,可以使用OR运算符组合枚举数。
另请参见keysToValue()和valueToKeys()。
isScoped
bool QMetaEnum::isScoped() const
如果此枚举器被声明为C++ 11枚举类,则返回true,否则返回false。
这个函数是在qt5.8中引入的。
isValid
bool QMetaEnum::isValid() const
如果此枚举有效(具有名称),则返回true;否则返回false。
另请参见name()
。
key
const char
*
QMetaEnum::key(int index) const
返回具有给定索引的键,如果不存在此类键,则返回nullptr。
另请参见keyCount(), value(), valueToKey().
keyCount
int QMetaEnum::keyCount() const
返回键的数目。
keyToValue
int QMetaEnum::keyToValue(const char
*
key, bool*
ok = nullptr) const
返回给定枚举键的整数值,如果未定义键,则返回-1。
如果未定义键,*ok设置为false;否则,*ok设置为true。
对于标志类型,请使用keysToValue()。
keysToValue
int QMetaEnum::keysToValue(const char
*
keys, bool*
ok = nullptr) const
返回通过使用OR运算符将键的值组合在一起而派生的值,如果未定义键,则返回-1。请注意,键中的字符串必须以“|”分隔。
如果未定义键,*ok设置为false;否则,*ok设置为true。
name
const char
*
QMetaEnum::name() const
返回类型的名称(不带范围)。
例如,Qt::Key枚举将Key作为类型名,Qt作为作用域。
对于标志,它返回标志类型的名称,而不是枚举类型的名称。
另请参见isValid(), scope(), enumName().
scope
const char
*
QMetaEnum::scope() const
返回此枚举数在其中声明的范围。
例如,Qt::AlignmentFlag枚举的作用域是Qt,名称是AlignmentFlag。
另请参见name()
value
int QMetaEnum::value(int index) const
返回具有给定索引的值;如果没有此类值,则返回-1。
另请参见keyCount(), key(), keyToValue().
valueToKey
const char
*
QMetaEnum::valueToKey(int value) const
返回用作给定枚举值名称的字符串,如果未定义值,则返回nullptr。
对于标志类型,请使用valueToKeys()。
valueToKeys
const char
*
QMetaEnum::valueToKey(int value) const
返回表示给定值的由“|”分隔键组成的字节数组。