Enum sınıfları, QVariants ve QSettings sınıfı ile ilgili bir sorunum var. QSettings örneğine giden bir QVariant içinde saklamak istediğim enum sınıfı değerleri vardır. bir onaylama işlemi atlar ve şikayet kodunu çalıştırmadan bu noktasındaenum sınıfı
enum class Foo
{
Bar1, Bar2
}
Q_ENUMS(Foo)
Q_DECLARE_METATYPE(Foo)
...
Foo value = Bar2;
QSettings settings;
settings.setValue(QString("Foo"), QVariant::fromValue(value));
: Yani, benim kod aslında şuna benzer
ASSERT failure in QVariant::save: "Invalid type to save", file kernel\qvariant.cpp
internet arama, ben sınıf olduğunu öğrendim uygun bir < < ve >> operatör eksik. Fakat bu enum sınıfları için bir seçenek değildir. Hatta
qRegisterMetaType<Foo>("Foo");
'u kullanmayı denedim, ancak yardımcı olmadı. Belki benim için başka önerileriniz var. Teşekkürler! o işaretsiz dönüştürmek olacaktır maskeli imzasız ints olan
Haklısınız, bu QVariants'daki enumlarla ilgili bir sorundur. Orijinal uygulamam QVariant'daki gerçek (işaretsiz) tamsayı değerlerini kaydetmekti. Şimdi kapsamdaki enumları denedim, ancak QVariants ile bu problemi yaşadım. Ancak, enumdaki en düşük/en yüksek değere sahip numaranızla orijinal uygulamaya geri döndüm. Teşekkürler. – CppChris