2017-01-05 1 views

Antwort

0

Sie müssen die passende QMetaEnum aus dem QMetaObject für den QObject-basierten Typ, in dem Q_ENUM deklariert ist, erhalten. Sobald Sie das haben, können Sie die ganze Zahl, die die Zeichenfolge darstellt, abrufen. Ein Beispiel für die Klasse MyEnumContainer mit einem Enum genannt EnumName, die einen Eintrag hat SomeKeyInEnumName genannt, könnte dies in etwa wie folgt aussehen:

QMetaObject* metaObject = MyEnumContainer::staticMetaObject(); 
int enumIndex = metaObject->indexOfEnumerator("EnumName"); 
QMetaEnum enum = metaObject->enumerator(enumIndex); 
int enumValue = enum.keyToValue("SomeKeyInEnumName"); 

für andere nützliche Tricks in QMetaEnum, https://doc.qt.io/qt-5/qmetaenum.html sollten Sie ein paar Ideen.

+0

Es scheint die Frage zu sein, Enum-Schlüssel zu setzen, anstatt Enum-Werte zu erhalten. Aber andererseits könnte es auch schlecht formuliert sein. – dtech

0

Enums sind Kompilierzeitkonstanten. Sie können sie nicht aus Strings setzen.

Vielleicht brauchen Sie eine QMap oder eine QHash, dann können Sie Schlüssel-Wert-Paare einfügen oder Suchen während der Laufzeit durchführen.

Verwandte Themen