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