1

私がやろうとしているのは、単純に a を に格納することQFlagsですQVariant

フラグの定義:

class EnumObject : public QObject
{
    Q_OBJECT
public:
    enum DemoFlag {
        SomeFlag0 = 0x00,
        SomeFlag1 = 0x01,
        SomeFlag2 = 0x02
    };
    Q_DECLARE_FLAGS(DemoFlags, DemoFlag)
    Q_FLAG(DemoFlags)
};

QVariant::fromValueこれで、関数を使用して qvariant を作成するだけです。

QVariant var = QVariant::fromValue<EnumObject::DemoFlags>(EnumObject::SomeFlag2);
qDebug() << var;

デバッグ出力は次を示します:

QVariant(EnumObject::DemoFlags, )

それで、何らかの理由で QVariant がフラグを保存できないようですか? タイプは認識しますが、値を保存できないようです。私は何か見落としてますか?代わりに列挙型を登録すると、すべて正常に動作します。

注:値を整数にキャストして戻すことで値を保存できることは知っていますが、QVariant の作成はジェネリック メソッドの一部であるため、これは不可能です。

4

1 に答える 1