QMetaEnum Class
La classe QMetaEnum fournit des métadonnées sur un énumérateur. Plus d'informations...
| 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. isFlag() indique si l'énumérateur est destiné à être utilisé comme indicateur, 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 de convertir la représentation entière d'une valeur d'énumération ou d'ensemble en 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 la fonctionnalité QMetaEnum, enregistrez l'énumérateur dans le système de méta-objets à l'aide de la macro Q_ENUM.
Voir aussi QMetaObject, QMetaMethod, et QMetaProperty.
Documentation sur les fonctions membres
const char *QMetaEnum::enumName() const
Renvoie le nom de l'enum de l'indicateur (sans la portée).
Par exemple, l'indicateur Qt::AlignmentFlag a pour nom d'enum AlignmentFlag, mais pour nom de type Alignment. Les enums qui ne sont pas des drapeaux ont les mêmes noms de type et d'enum.
Les noms d'énumération ont la même portée que le nom du type.
Voir aussi isValid() et name().
[static] template <typename T> QMetaEnum QMetaEnum::fromType()
Renvoie l'adresse QMetaEnum correspondant au type indiqué dans le paramètre du modèle. L'énumération doit être déclarée avec Q_ENUM.
[since 6.9] bool QMetaEnum::is64Bit() const
Renvoie true si le type sous-jacent de cette énumération a une largeur de 64 bits.
Cette fonction a été introduite dans Qt 6.9.
Voir aussi 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 d'énumération C++11 ; sinon, renvoie false.
bool QMetaEnum::isValid() const
Renvoie true si cette énumération est valide (possède un nom) ; sinon, renvoie false.
Voir aussi name().
const char *QMetaEnum::key(int index) const
Renvoie la clé avec la valeur index, ou nullptr s'il n'existe pas de clé de ce type.
Voir aussi 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, c'est le comportement attendu.
Une exception notable concerne les valeurs de drapeau dont le bit 31 est défini, comme 0x8000'0000, car certains compilateurs (tels que Microsoft Visual Studio) ne passent pas automatiquement à un type sous-jacent non signé. Pour éviter ce problème, spécifiez explicitement le type sous-jacent dans la déclaration enum.
Note : Pour les QMetaObjects compilés avant Qt 6.6, cette fonction s'étend toujours en signe.
Cette fonction a été introduite dans Qt 6.9.
Voir aussi valueToKey(), isFlag(), et keysToValue64().
int QMetaEnum::keyToValue(const char *key, bool *ok = nullptr) const
Renvoie la valeur entière de l'énumération donnée key, ou -1 si key n'est pas défini.
Si key n'est pas défini, *ok est mis à false ; sinon *ok est mis à true.
Pour les types de drapeaux, utilisez keysToValue().
S'il s'agit d'une énumération de 64 bits (voir is64Bit()), cette fonction renvoie la partie basse de 32 bits de la valeur. Utilisez keyToValue64() pour obtenir la valeur complète.
Voir aussi keyToValue64, valueToKey(), isFlag(), keysToValue() et is64Bit().
std::optional<quint64> QMetaEnum::keysToValue64(const char *keys) const
Renvoie la valeur obtenue en combinant les valeurs de keys à l'aide de l'opérateur OR, ou std::nullopt si keys n'est pas défini. Notez que les chaînes de keys doivent être séparées par des '|'.
Cette fonction étend toujours la valeur des énumérations de 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 défini, comme 0x8000'0000, car certains compilateurs (tels que Microsoft Visual Studio) ne passent pas automatiquement à un type sous-jacent non signé. Pour éviter ce problème, spécifiez explicitement le type sous-jacent dans la déclaration enum.
Note : Pour les QMetaObjects compilés avant Qt 6.6, cette fonction s'étend toujours en signe.
Voir aussi 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 de keys doivent être séparées par des '|'.
Si keys n'est pas défini, *ok prend la valeur false ; sinon *ok prend la valeur true.
S'il s'agit d'une énumération de 64 bits (voir is64Bit()), cette fonction renvoie la partie basse de 32 bits de la valeur. Utilisez keyToValue64() pour obtenir la valeur complète.
Voir aussi keysToValue64(), isFlag(), valueToKey(), valueToKeys() et is64Bit().
[since 6.6] QMetaType QMetaEnum::metaType() const
Renvoie le méta type de l'énumération.
Si le site QMetaObject dont fait partie cette énumération a été généré avec Qt 6.5 ou une version antérieure, il s'agira d'un méta type invalide.
Remarque : il s'agit du méta type de l'enum lui-même, et non de son type intégral sous-jacent. Vous pouvez récupérer le méta type du type sous-jacent de l'enum en utilisant 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 drapeaux, cela renvoie le nom du type de drapeau, et non le nom 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 aussi name().
[since 6.9] std::optional<quint64> QMetaEnum::value64(int index) const
Renvoie la valeur avec l'adresse index donnée si elle existe ; ou renvoie une adresse std::nullopt si elle n'existe pas.
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 défini, comme 0x8000'0000, car certains compilateurs (tels que Microsoft Visual Studio) ne passent pas automatiquement à un type sous-jacent non signé. Pour éviter ce problème, spécifiez explicitement le type sous-jacent dans la déclaration enum.
Note : Pour les QMetaObjects compilés avant Qt 6.6, cette fonction s'étend toujours en signe.
Cette fonction a été introduite dans Qt 6.9.
Voir aussi keyCount(), key(), keyToValue(), et is64Bit().
int QMetaEnum::value(int index) const
Renvoie la valeur correspondant à l'adresse index; ou renvoie -1 si cette valeur n'existe pas.
S'il s'agit d'une énumération avec un type sous-jacent de 64 bits (voir is64Bit()), cette fonction renvoie la partie basse de 32 bits de la valeur. Utilisez value64() pour obtenir la valeur complète.
Voir aussi value64(), keyCount(), key() et keyToValue().
const char *QMetaEnum::valueToKey(quint64 value) const
Renvoie la chaîne de caractères 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 aussi isFlag() et valueToKeys().
QByteArray QMetaEnum::valueToKeys(quint64 value) const
Renvoie un tableau d'octets de clés séparées par '|' qui représente l'adresse value donnée.
Remarque : le passage d'un value 64 bits à une énumération dont le type sous-jacent est 32 bits (c'est-à-dire si is64Bit() renvoie false) renvoie 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.