Sur cette page

QMetaEnum Class

La classe QMetaEnum fournit des métadonnées sur un énumérateur. En savoir plus...

En-tête : #include <QMetaEnum>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Fonctions publiques

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

Membres publics statiques

QMetaEnum fromType()

Description détaillée

Utilisez ` name()` pour obtenir le nom de l'énumérateur. Les clés de l'énumérateur (noms de chaque élément énuméré) sont renvoyées par ` key()` ; utilisez ` keyCount()` pour connaître le nombre de clés. La fonction ` isFlag()` indique si l'énumérateur est destiné à être utilisé comme drapeau, ce qui signifie que ses valeurs peuvent être combinées à l'aide de l'opérateur OR.

Les fonctions de conversion keyToValue(), valueToKey(), keysToValue() et valueToKeys() permettent la conversion entre la représentation entière d’une valeur d’énumération ou d’ensemble et sa représentation littérale. La fonction scope() renvoie la portée de la classe dans laquelle cet énumérateur a été déclaré.

Pour utiliser les fonctionnalités de QMetaEnum, enregistrez l'énumérateur dans le système de méta-objets à l'aide de la macro ` Q_ENUM `.

enum AppleType {
    Big,
    Small
};
Q_ENUM(AppleType)

QMetaEnum metaEnum = QMetaEnum::fromType<ModelApple::AppleType>();
qDebug() << metaEnum.valueToKey(ModelApple::Big);

Voir également QMetaObject, QMetaMethod et QMetaProperty.

Documentation sur les fonctions membres

const char *QMetaEnum::enumName() const

Renvoie le nom d’énumération de l’indicateur (sans la portée).

Par exemple, l’indicateur « Qt::AlignmentFlag » a pour nom d’énumération « AlignmentFlag », mais pour nom de type « Alignment ». Les énumérations qui ne sont pas des indicateurs ont le même nom de type et le même nom d’énumération.

Les noms d'énumération ont la même portée que le nom du type.

Voir également isValid() et name().

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

Renvoie l'QMetaEnum e correspondant au type spécifié dans le paramètre de modèle. L'énumération doit être déclarée avec l'Q_ENUM.

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

Renvoie « true » si le type sous-jacent de cette énumération est de 64 bits.

Cette fonction a été introduite dans Qt 6.9.

Voir également value64().

bool QMetaEnum::isFlag() const

Renvoie « true » si cet énumérateur est utilisé comme indicateur ; sinon, renvoie « false ».

Lorsqu’ils sont utilisés comme indicateurs, les énumérateurs peuvent être combinés à l’aide de l’opérateur OR.

Voir également keysToValue() et valueToKeys().

bool QMetaEnum::isScoped() const

Renvoie « true » si cet énumérateur est déclaré comme une classe énumérée C++11 ; sinon, renvoie « false ».

bool QMetaEnum::isValid() const

Renvoie « true » si cette énumération est valide (si elle possède un nom) ; sinon, renvoie « false ».

Voir aussi name().

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

Renvoie la clé correspondant à l'index fournie, ou nullptr si cette clé n'existe pas.

Voir également keyCount(), value() et valueToKey().

int QMetaEnum::keyCount() const

Renvoie le nombre de clés.

Voir aussi key().

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

Renvoie la valeur entière de l'énumération donnée key, ou std::nullopt si key n'est pas défini.

Pour les types de drapeaux, utilisez keysToValue64().

Cette fonction étend toujours la valeur des énumérations 32 bits à 64 bits, si leur type sous-jacent est signé (par exemple, int, short). Dans la plupart des cas, il s'agit du comportement attendu.

Une exception notable concerne les valeurs de drapeau dont le bit 31 est activé, comme 0x8000'0000, car certains compilateurs (tels que Microsoft Visual Studio) ne basculent pas automatiquement vers un type sous-jacent non signé. Pour éviter ce problème, spécifiez explicitement le type sous-jacent dans la déclaration de enum.

Remarque : pour les QMetaObjects compilés avant Qt 6.6, cette fonction effectue toujours une extension de signe.

Cette fonction a été introduite dans Qt 6.9.

Voir également ` valueToKey()`, ` isFlag()` et ` keysToValue64()`.

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

Renvoie la valeur entière de l’ key d’énumération donnée, ou -1 si key n’est pas défini.

Si key n'est pas défini, *ok est défini sur false ; sinon, *ok est défini sur true.

Pour les types de drapeaux, utilisez keysToValue().

S'il s'agit d'une énumération 64 bits (voir is64Bit()), cette fonction renvoie les 32 bits de poids faible de la valeur. Utilisez plutôt keyToValue64() pour obtenir la valeur complète.

Voir également keyToValue64, valueToKey(), isFlag(), keysToValue() et is64Bit().

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

Renvoie la valeur obtenue en combinant les valeurs de la liste ` keys ` à l’aide de l’opérateur OR, ou ` std::nullopt ` si ` keys ` n’est pas défini. Notez que les chaînes contenues dans ` keys ` doivent être séparées par le caractère « | ».

Cette fonction étend toujours la valeur des énumérations 32 bits à 64 bits, si leur type sous-jacent est signé (par exemple, int, short). Dans la plupart des cas, il s’agit du comportement attendu.

Une exception notable concerne les valeurs de drapeau dont le bit 31 est activé, comme 0x8000'0000, car certains compilateurs (tels que Microsoft Visual Studio) ne basculent pas automatiquement vers un type sous-jacent non signé. Pour éviter ce problème, spécifiez explicitement le type sous-jacent dans la déclaration enum.

Remarque : pour les QMetaObjects compilés avant Qt 6.6, cette fonction effectue toujours une extension de signe.

Voir également ` isFlag()`, ` valueToKey()` et ` valueToKeys()`.

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

Renvoie la valeur obtenue en combinant les valeurs de ` keys ` à l'aide de l'opérateur OR, ou -1 si ` keys ` n'est pas défini. Notez que les chaînes contenues dans ` keys ` doivent être séparées par le caractère « | ».

Si keys n’est pas défini, *ok est défini sur false ; sinon, *ok est défini sur true.

S’il s’agit d’une énumération 64 bits (voir is64Bit()), cette fonction renvoie les 32 premiers bits de la valeur. Utilisez keyToValue64() pour obtenir la valeur complète.

Voir également keysToValue64(), isFlag(), valueToKey(), valueToKeys() et is64Bit().

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

Renvoie le méta-type de l'énumération.

Si l'QMetaObject, dont fait partie cette énumération, a été générée avec Qt 6.5 ou une version antérieure, ce méta-type sera invalide.

Remarque : il s'agit du méta-type de l'énumération elle-même, et non de son type entier sous-jacent. Vous pouvez récupérer le méta-type du type sous-jacent de l'énumération à l'aide de la fonction ` QMetaType::underlyingType()`.

Cette fonction a été introduite dans Qt 6.6.

const char *QMetaEnum::name() const

Renvoie le nom du type (sans la portée).

Par exemple, l'énumération « Qt::Key » a pour nom de type « Key » et pour portée « Qt ».

Pour les indicateurs, cette fonction renvoie le nom du type d’indicateur, et non celui du type d’énumération.

Voir également isValid(), scope() et enumName().

const char *QMetaEnum::scope() const

Renvoie la portée dans laquelle cet énumérateur a été déclaré.

Par exemple, l'énumération Qt::AlignmentFlag a pour portée Qt et pour nom AlignmentFlag.

Voir également name().

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

Renvoie la valeur associée à l'index donnée si celle-ci existe ; sinon, renvoie une exception de type ` std::nullopt `.

Cette fonction étend toujours la valeur des énumérations 32 bits à 64 bits, si leur type sous-jacent est signé (par exemple, int, short). Dans la plupart des cas, c'est le comportement attendu.

Une exception notable concerne les valeurs de drapeau dont le bit 31 est activé, comme 0x8000'0000, car certains compilateurs (tels que Microsoft Visual Studio) ne basculent pas automatiquement vers un type sous-jacent non signé. Pour éviter ce problème, spécifiez explicitement le type sous-jacent dans la déclaration de enum.

Remarque : pour les QMetaObjects compilés avant Qt 6.6, cette fonction effectue toujours une extension de signe.

Cette fonction a été introduite dans Qt 6.9.

Voir également keyCount(), key(), keyToValue() et is64Bit().

int QMetaEnum::value(int index) const

Renvoie la valeur associée à l'index on fournie ; ou renvoie -1 si cette valeur n'existe pas.

S’il s’agit d’une énumération dont le type sous-jacent est de 64 bits (voir is64Bit()), cette fonction renvoie les 32 bits de poids faible de la valeur. Utilisez plutôt value64() pour obtenir la valeur complète.

Voir également value64(), keyCount(), key() et keyToValue().

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

Renvoie la chaîne utilisée comme nom de l'énumération donnée : value, ou nullptr si value n'est pas défini.

Pour les types de drapeaux, utilisez valueToKeys().

Voir également isFlag() et valueToKeys().

QByteArray QMetaEnum::valueToKeys(quint64 value) const

Renvoie un tableau d'octets contenant des clés séparées par « | » qui représentent l'value donnée.

Remarque : le fait de passer une valeur « value » de 64 bits à une énumération dont le type sous-jacent est de 32 bits (c'est-à-dire si la fonction is64Bit() renvoie false) entraîne le retour d'une chaîne vide.

Voir également isFlag(), valueToKey() et 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.