2017-01-05 5 views
-1

からQ_ENUMを設定することができ、私はQStringのからQ_ENUMを設定しようとしているが、私はこれを行うにはどのように何のアイデアを得ませんしました。これを経験した人は誰ですか?はどのように私はQStringの

答えて

0

Q_ENUMが宣言されているQObjectベースの型に対応するQMetaObjectからQMetaEnumを取得する必要があります。それを取得したら、その文字列が表す整数を取得できます。 https://doc.qt.io/qt-5/qmetaenum.htmlはあなたにいくつかのアイデアを与える必要があり、QMetaEnumに

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

他の有用なトリックの場合:SomeKeyInEnumNameというエントリがありEnumNameと呼ばれる列挙型、と例のクラスMyEnumContainerの場合、これは次のようになります。

+0

enum値を取得するのではなく、enumキーを設定することが問題です。しかし、再び、それはあまりにも言葉になることができます。 – dtech

0

列挙型は、コンパイル時定数です。 「文字列からそれらを設定する」ことはできません。

おそらくQMapまたはQHashが必要な場合は、実行時にキーと値のペアを挿入したり、ルックアップを実行したりできます。