En esta página

QMetaEnum Class

La clase QMetaEnum proporciona metadatos sobre un enumerador. Más...

Cabecera: #include <QMetaEnum>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Funciones públicas

const char *enumName() const
(since 6.9) bool is64Bit() const
bool isFlag() const
bool isScoped() const
bool isValid() const
const char *key(int index) const
int keyCount() const
(since 6.9) std::optional<quint64> keyToValue64(const char *key) const
int keyToValue(const char *key, bool *ok = nullptr) const
std::optional<quint64> keysToValue64(const char *keys) const
int keysToValue(const char *keys, bool *ok = nullptr) const
(since 6.6) QMetaType metaType() const
const char *name() const
const char *scope() const
(since 6.9) std::optional<quint64> value64(int index) const
int value(int index) const
const char *valueToKey(quint64 value) const
QByteArray valueToKeys(quint64 value) const

Miembros públicos estáticos

QMetaEnum fromType()

Descripción detallada

Utilice name() para obtener el nombre del enumerador. Las claves del enumerador (nombres de cada elemento enumerado) se devuelven mediante key(); utilice keyCount() para conocer el número de claves. isFlag() devuelve si el enumerador está destinado a ser utilizado como una bandera, lo que significa que sus valores se pueden combinar utilizando el operador OR.

Las funciones de conversión keyToValue(), valueToKey(), keysToValue() y valueToKeys() permiten la conversión entre la representación entera de un valor de enumeración o conjunto y su representación literal. La función scope() devuelve el ámbito de clase en el que se declaró este enumerador.

Para utilizar la funcionalidad QMetaEnum, registre el enumerador en el sistema de metaobjetos mediante la macro Q_ENUM.

enum TipoManzana { Grande,Pequeña }; Q_ENUM(TipoManzana)QMetaEnum metaEnum = QMetaEnum::fromType<ModeloManzana::AppleType>();qDebug() << metaEnum.valueToKey(ModelApple::Big);

Véase también QMetaObject, QMetaMethod, y QMetaProperty.

Documentación de las funciones miembro

const char *QMetaEnum::enumName() const

Devuelve el nombre enum de la bandera (sin el ámbito).

Por ejemplo, la bandera Qt::AlignmentFlag tiene AlignmentFlag como nombre de enum, pero Alignment como nombre de tipo. Los enums que no son flag tienen los mismos nombres de tipo y de enum.

Los nombres de enum tienen el mismo ámbito que el nombre de tipo.

Véase también isValid() y name().

[static] template <typename T> QMetaEnum QMetaEnum::fromType()

Devuelve el QMetaEnum correspondiente al tipo del parámetro de plantilla. El enum debe declararse con Q_ENUM.

[since 6.9] bool QMetaEnum::is64Bit() const

Devuelve true si el tipo subyacente de esta enumeración tiene 64 bits de ancho.

Esta función se introdujo en Qt 6.9.

Véase también value64().

bool QMetaEnum::isFlag() const

Devuelve true si este enumerador se utiliza como indicador; en caso contrario, devuelve false.

Cuando se utilizan como indicadores, los enumeradores pueden combinarse utilizando el operador OR.

Véase también keysToValue() y valueToKeys().

bool QMetaEnum::isScoped() const

Devuelve true si este enumerador está declarado como una clase enum C++11; en caso contrario devuelve false.

bool QMetaEnum::isValid() const

Devuelve true si este enum es válido (tiene un nombre); en caso contrario devuelve false.

Véase también name().

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

Devuelve la clave con el valor index, o nullptr si no existe tal clave.

Véase también keyCount(), value() y valueToKey().

int QMetaEnum::keyCount() const

Devuelve el número de teclas.

Véase también key().

[since 6.9] std::optional<quint64> QMetaEnum::keyToValue64(const char *key) const

Devuelve el valor entero de la enumeración dada key, o std::nullopt si key no está definida.

Para tipos de bandera, utilice keysToValue64().

Esta función siempre extiende con signo el valor de las enumeraciones de 32 bits a 64 bits, si su tipo subyacente tiene signo (por ejemplo, int, short). En la mayoría de los casos, este es el comportamiento esperado.

Una excepción notable es para los valores de bandera que tienen el bit 31 establecido, como 0x8000'0000, porque algunos compiladores (como Microsoft Visual Studio), no cambian automáticamente a un tipo subyacente sin signo. Para evitar este problema, especifique explícitamente el tipo subyacente en la declaración enum.

Nota: Para QMetaObjects compilados antes de Qt 6.6, esta función siempre extiende el signo.

Esta función se introdujo en Qt 6.9.

Véase también valueToKey(), isFlag(), y keysToValue64().

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

Devuelve el valor entero de la enumeración dada key, o -1 si key no está definida.

Si key no está definido, *ok se establece en false; de lo contrario *ok se establece en true.

Para tipos de bandera, utilice keysToValue().

Si se trata de una enumeración de 64 bits (véase is64Bit()), esta función devuelve la parte baja de 32 bits del valor. Utilice keyToValue64() para obtener el valor completo.

Véase también keyToValue64, valueToKey(), isFlag(), keysToValue() y is64Bit().

std::optional<quint64> QMetaEnum::keysToValue64(const char *keys) const

Devuelve el valor derivado de combinar los valores de keys utilizando el operador OR, o std::nullopt si keys no está definido. Tenga en cuenta que las cadenas de keys deben estar separadas por '|'.

Esta función siempre extiende con signo el valor de las enumeraciones de 32 bits a 64 bits, si su tipo subyacente es con signo (por ejemplo, int, short). En la mayoría de los casos, este es el comportamiento esperado.

Una excepción notable es para los valores de bandera que tienen el bit 31 establecido, como 0x8000'0000, porque algunos compiladores (como Microsoft Visual Studio), no cambian automáticamente a un tipo subyacente sin signo. Para evitar este problema, especifique explícitamente el tipo subyacente en la declaración enum.

Nota: Para QMetaObjects compilados antes de Qt 6.6, esta función siempre extiende el signo.

Véase también isFlag(), valueToKey(), y valueToKeys().

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

Devuelve el valor derivado de combinar los valores de keys utilizando el operador OR, o -1 si keys no está definido. Tenga en cuenta que las cadenas de keys deben estar separadas por '|'.

Si keys no está definido, *ok se establece en false; de lo contrario *ok se establece en true.

Si se trata de una enumeración de 64 bits (véase is64Bit()), esta función devuelve la parte baja de 32 bits del valor. Utilice keyToValue64() para obtener el valor completo.

Véase también keysToValue64(), isFlag(), valueToKey(), valueToKeys() y is64Bit().

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

Devuelve el metatipo del enum.

Si el QMetaObject del que forma parte este enum se generó con Qt 6.5 o anterior, este metatipo no será válido.

Nota: Este es el metatipo del enum en sí, no de su tipo integral subyacente. Puede recuperar el metatipo del tipo subyacente del enum utilizando QMetaType::underlyingType().

Esta función se introdujo en Qt 6.6.

const char *QMetaEnum::name() const

Devuelve el nombre del tipo (sin el ámbito).

Por ejemplo, la enumeración Qt::Key tiene Key como nombre de tipo y Qt como ámbito.

En el caso de las banderas, devuelve el nombre del tipo de bandera, no el nombre del tipo de enumeración.

Véase también isValid(), scope() y enumName().

const char *QMetaEnum::scope() const

Devuelve el ámbito en el que se declaró este enumerador.

Por ejemplo, la enumeración Qt::AlignmentFlag tiene Qt como ámbito y AlignmentFlag como nombre.

Véase también name().

[since 6.9] std::optional<quint64> QMetaEnum::value64(int index) const

Devuelve el valor con el index dado si existe; o devuelve un std::nullopt si no existe.

Esta función siempre extiende con signo el valor de las enumeraciones de 32 bits a 64 bits, si su tipo subyacente tiene signo (por ejemplo, int, short). En la mayoría de los casos, este es el comportamiento esperado.

Una excepción notable es para los valores de bandera que tienen el bit 31 establecido, como 0x8000'0000, porque algunos compiladores (como Microsoft Visual Studio), no cambian automáticamente a un tipo subyacente sin signo. Para evitar este problema, especifique explícitamente el tipo subyacente en la declaración enum.

Nota: Para QMetaObjects compilados antes de Qt 6.6, esta función siempre extiende el signo.

Esta función se introdujo en Qt 6.9.

Véase también keyCount(), key(), keyToValue(), y is64Bit().

int QMetaEnum::value(int index) const

Devuelve el valor con la dirección index; o devuelve -1 si no existe tal valor.

Si se trata de una enumeración con un tipo subyacente de 64 bits (véase is64Bit()), esta función devuelve la parte baja de 32 bits del valor. Utilice value64() para obtener el valor completo.

Véase también value64(), keyCount(), key() y keyToValue().

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

Devuelve la cadena que se utiliza como nombre de la enumeración dada value, o nullptr si value no está definida.

Para tipos de bandera, utilice valueToKeys().

Véase también isFlag() y valueToKeys().

QByteArray QMetaEnum::valueToKeys(quint64 value) const

Devuelve una matriz de bytes de claves separadas por '|' que representa el value dado.

Nota: Si se pasa un value de 64 bits a una enumeración cuyo tipo subyacente es de 32 bits (es decir, si is64Bit() devuelve false), se devuelve una cadena vacía.

Véase también isFlag(), valueToKey() y keysToValue().

© 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.