Auf dieser Seite

QMetaEnum Class

Die Klasse „QMetaEnum“ stellt Metadaten zu einem Enumerator bereit. Mehr...

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

Öffentliche Funktionen

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

Statische öffentliche Mitglieder

QMetaEnum fromType()

Ausführliche Beschreibung

Verwenden Sie „ name()“ für den Namen des Enumerators. Die Schlüssel des Enumerators (die Namen der einzelnen Elemente) werden von „ key()“ zurückgegeben; verwenden Sie „ keyCount()“, um die Anzahl der Schlüssel zu ermitteln. „ isFlag()“ gibt zurück, ob der Enumerator als Flag verwendet werden soll, was bedeutet, dass seine Werte mit dem OR-Operator kombiniert werden können.

Die Konvertierungsfunktionen ` keyToValue()`, ` valueToKey()`, ` keysToValue()` und ` valueToKeys()` ermöglichen die Konvertierung zwischen der ganzzahligen Darstellung eines Aufzählungs- oder Mengenwerts und seiner literalen Darstellung. Die Funktion ` scope()` gibt den Klassenbereich zurück, in dem dieser Aufzähler deklariert wurde.

Um die QMetaEnum-Funktionalität zu nutzen, registrieren Sie den Enumerator mithilfe des Makros „ Q_ENUM “ im Metaobjektsystem.

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

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

Siehe auch QMetaObject, QMetaMethod und QMetaProperty.

Dokumentation zu den Member-Funktionen

const char *QMetaEnum::enumName() const

Gibt den Enum-Namen des Flags zurück (ohne den Geltungsbereich).

Beispielsweise hat das Flag „ Qt::AlignmentFlag “ den Enum-Namen „ AlignmentFlag “, während der Typname „ Alignment “ lautet. Enums, die keine Flags sind, haben denselben Typ- und Enum-Namen.

Enum-Namen haben denselben Geltungsbereich wie der Typname.

Siehe auch „ isValid()“ und „ name()“.

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

Gibt die „ QMetaEnum “ zurück, die dem Typ im Vorlagenparameter entspricht. Die Enumeration muss mit „ Q_ENUM “ deklariert werden.

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

Gibt „ true “ zurück, wenn der zugrunde liegende Typ dieser Aufzählung 64 Bit breit ist.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch ` value64()`.

bool QMetaEnum::isFlag() const

Gibt „ true “ zurück, wenn dieser Enumerator als Flag verwendet wird; andernfalls wird „false“ zurückgegeben.

Bei Verwendung als Flags können Enumeratoren mit dem OR-Operator kombiniert werden.

Siehe auch „ keysToValue()“ und „ valueToKeys()“.

bool QMetaEnum::isScoped() const

Gibt „ true “ zurück, wenn dieser Enumerator als C++11-Enum-Klasse deklariert ist; andernfalls wird „false“ zurückgegeben.

bool QMetaEnum::isValid() const

Gibt „ true “ zurück, wenn diese Enumeration gültig ist (einen Namen hat); andernfalls wird „false“ zurückgegeben.

Siehe auch name().

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

Gibt den Schlüssel mit dem angegebenen index zurück oder nullptr, falls kein solcher Schlüssel existiert.

Siehe auch keyCount(), value() und valueToKey().

int QMetaEnum::keyCount() const

Gibt die Anzahl der Schlüssel zurück.

Siehe auch „ key()“.

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

Gibt den ganzzahligen Wert der angegebenen Aufzählung „ key “ zurück oder „ std::nullopt “, falls „ key “ nicht definiert ist.

Verwenden Sie für Flag-Typen keysToValue64().

Diese Funktion erweitert den Wert von 32-Bit-Enumerationen immer auf 64 Bit, wenn ihr zugrunde liegender Typ vorzeichenbehaftet ist (z. B. ` int`, ` short`). In den meisten Fällen entspricht dies dem erwarteten Verhalten.

Eine bemerkenswerte Ausnahme bilden Flag-Werte, bei denen Bit 31 gesetzt ist, wie z. B. 0x8000'0000, da einige Compiler (wie Microsoft Visual Studio) nicht automatisch auf einen vorzeichenlosen zugrunde liegenden Typ umschalten. Um dieses Problem zu vermeiden, geben Sie den zugrunde liegenden Typ in der Deklaration von enum explizit an.

Hinweis: Bei QMetaObjects, die vor Qt 6.6 kompiliert wurden, führt diese Funktion immer eine Vorzeichenerweiterung durch.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch ` valueToKey()`, ` isFlag()` und ` keysToValue64()`.

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

Gibt den ganzzahligen Wert der angegebenen Enumeration „ key “ zurück oder -1, wenn „ key “ nicht definiert ist.

Ist key nicht definiert, wird *ok auf „false“ gesetzt; andernfalls wird *ok auf „true“ gesetzt.

Verwenden Sie für Flag-Typen die Funktion „ keysToValue()“.

Handelt es sich um eine 64-Bit-Enumeration (siehe is64Bit()), gibt diese Funktion die unteren 32 Bit des Werts zurück. Verwenden Sie stattdessen keyToValue64(), um den vollständigen Wert zu erhalten.

Siehe auch „ keyToValue64“ , „ valueToKey()“, „ isFlag()“, „ keysToValue()“ und „ is64Bit()“.

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

Gibt den Wert zurück, der sich aus der Verknüpfung der Werte von „ keys “ mit dem OR-Operator ergibt, oder „ std::nullopt “, falls „ keys “ nicht definiert ist. Beachten Sie, dass die Zeichenfolgen in „ keys “ durch „|“ getrennt sein müssen.

Diese Funktion erweitert den Wert von 32-Bit-Enumerationen stets auf 64 Bit, wenn ihr zugrunde liegender Typ vorzeichenbehaftet ist (z. B. ` int`, ` short`). In den meisten Fällen entspricht dies dem erwarteten Verhalten.

Eine bemerkenswerte Ausnahme bilden Flag-Werte, bei denen Bit 31 gesetzt ist, wie z. B. 0x8000'0000, da einige Compiler (wie Microsoft Visual Studio) nicht automatisch auf einen vorzeichenlosen zugrunde liegenden Typ umschalten. Um dieses Problem zu vermeiden, geben Sie den zugrunde liegenden Typ in der Deklaration von ` enum ` explizit an.

Hinweis: Bei QMetaObjects, die vor Qt 6.6 kompiliert wurden, erfolgt bei dieser Funktion immer eine Vorzeichenerweiterung.

Siehe auch ` isFlag()`, ` valueToKey()` und ` valueToKeys()`.

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

Gibt den Wert zurück, der sich aus der Verknüpfung der Werte von „ keys “ mit dem OR-Operator ergibt, oder -1, wenn „ keys “ nicht definiert ist. Beachten Sie, dass die Zeichenfolgen in „ keys “ durch „|“ getrennt sein müssen.

Ist „ keys “ nicht definiert, wird * „ok “ auf „false“ gesetzt; andernfalls wird * „ok “ auf „true“ gesetzt.

Handelt es sich um eine 64-Bit-Enumeration (siehe is64Bit()), gibt diese Funktion die unteren 32 Bit des Werts zurück. Verwenden Sie stattdessen keyToValue64(), um den vollständigen Wert zu erhalten.

Siehe auch keysToValue64(), isFlag(), valueToKey(), valueToKeys() und is64Bit().

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

Gibt den Metatyp der Enumeration zurück.

Wenn die „ QMetaObject “, zu der diese Enumeration gehört, mit Qt 6.5 oder früher generiert wurde, handelt es sich hierbei um einen ungültigen Metatyp.

Hinweis: Dies ist der Metatyp der Enumeration selbst, nicht der ihr zugrunde liegenden ganzzahligen Typen. Den Metatyp des zugrunde liegenden Typs der Enumeration können Sie mit ` QMetaType::underlyingType()` abrufen.

Diese Funktion wurde in Qt 6.6 eingeführt.

const char *QMetaEnum::name() const

Gibt den Namen des Typs (ohne den Gültigkeitsbereich) zurück.

Beispielsweise hat die Aufzählung „ Qt::Key “ den Typnamen „ Key “ und den Gültigkeitsbereich „ Qt “.

Bei Flags gibt diese Funktion den Namen des Flag-Typs zurück, nicht den Namen des Enum-Typs.

Siehe auch „ isValid()“, „ scope()“ und „ enumName()“.

const char *QMetaEnum::scope() const

Gibt den Geltungsbereich zurück, in dem dieser Enumerator deklariert wurde.

Beispielsweise hat die Aufzählung „ Qt::AlignmentFlag “ den Gültigkeitsbereich „ Qt “ und den Namen „ AlignmentFlag “.

Siehe auch „ name()“.

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

Gibt den Wert mit dem angegebenen index zurück, sofern dieser existiert; andernfalls wird ein std::nullopt zurückgegeben.

Diese Funktion erweitert den Wert von 32-Bit-Enumerationen immer auf 64 Bit, wenn ihr zugrunde liegender Typ vorzeichenbehaftet ist (z. B. ` int`, ` short`). In den meisten Fällen entspricht dies dem erwarteten Verhalten.

Eine bemerkenswerte Ausnahme bilden Flag-Werte, bei denen Bit 31 gesetzt ist, wie z. B. 0x8000'0000, da einige Compiler (wie Microsoft Visual Studio) nicht automatisch auf einen vorzeichenlosen zugrunde liegenden Typ umschalten. Um dieses Problem zu vermeiden, geben Sie den zugrunde liegenden Typ in der Deklaration von ` enum ` explizit an.

Hinweis: Bei QMetaObjects, die vor Qt 6.6 kompiliert wurden, führt diese Funktion immer eine Vorzeichenerweiterung durch.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch ` keyCount()`, ` key()`, ` keyToValue()` und ` is64Bit()`.

int QMetaEnum::value(int index) const

Gibt den Wert mit der angegebenen index zurück; andernfalls wird -1 zurückgegeben, wenn kein solcher Wert vorhanden ist.

Handelt es sich um eine Aufzählung mit einem zugrunde liegenden 64-Bit-Typ (siehe is64Bit()), gibt diese Funktion die unteren 32 Bit des Werts zurück. Verwenden Sie stattdessen value64(), um den vollständigen Wert zu erhalten.

Siehe auch value64(), keyCount(), key() und keyToValue().

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

Gibt die Zeichenfolge zurück, die als Name der angegebenen Aufzählung verwendet wird: value oder nullptr, falls value nicht definiert ist.

Verwenden Sie für Flag-Typen valueToKeys().

Siehe auch isFlag() und valueToKeys().

QByteArray QMetaEnum::valueToKeys(quint64 value) const

Gibt ein Byte-Array mit durch „|“ getrennten Schlüsseln zurück, das die angegebene „ value “ darstellt.

Hinweis: Wird ein 64-Bit- value an eine Enumerationübergeben , deren zugrunde liegender Typ 32-Bit ist (d. h., wenn is64Bit() false zurückgibt), wird eine leere Zeichenkette zurückgegeben.

Siehe auch „ isFlag()“, „ valueToKey()“ und „ 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.