Zum Beispiel habe ich die folgende Klasse:Gibt es eine Möglichkeit, QMetaEnum mit Q_ENUMS zu verwenden, die nicht zur Klasse Q_OBJECT oder Q_GADGET gehören?
namespace someName
{
class someClass
{
Q_ENUMS(ESomeEnum)
public:
enum ESomeEnum {ENUM_A, ENUM_B, ENUM_C};
// ... some other things ..
}
}
Q_DECLARE_METATYPE(someName::someClass)
Gibt es eine Möglichkeit QMetaEnum :: valueToKey oder QMetaEnum :: keyToValue zu benutzen?
Versucht das Verfahren in this answer bekam aber den folgenden Fehler:
error: static assertion failed: QMetaEnum::fromType only works with enums declared as Q_ENUM or Q_FLAG #define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
Ich kann X-Makros verwenden meine gewünschte Ausgabe zu erhalten, aber es wäre auch schön sein, mehr Tricks in Qt zu lernen.
Sie verwenden 'Q_ENUMS ', Ich denke du musst' Q_ENUM' in diesem Fall benutzen. – thuga
Ich behalte Code, der auf diese Weise geschrieben wird, und die Änderung von Q_ENUMS zu Q_ENUM würde unnötige "Panik" für den Projektmanager anzeigen, da dies viele Dateien betrifft. – misilita