5
我遇到了enum類,QVariants和QSettings類的問題。有一些枚舉類的值,我想存儲在一個QVariant進入一個QSettings實例。所以,我的代碼實際上看起來是這樣的:在QSettings中的QVariant中的枚舉類
enum class Foo
{
Bar1, Bar2
}
Q_ENUMS(Foo)
Q_DECLARE_METATYPE(Foo)
...
Foo value = Bar2;
QSettings settings;
settings.setValue(QString("Foo"), QVariant::fromValue(value));
此時在執行代碼,斷言跳躍和抱怨:
ASSERT failure in QVariant::save: "Invalid type to save", file kernel\qvariant.cpp
搜索互聯網,我發現了類缺少配件< <和>>操作符。但是,這不是一個枚舉類的選項。我甚至試圖使用
qRegisterMetaType<Foo>("Foo");
但它沒有幫助。也許你對我有其他建議/解決方案。謝謝!
你說得對,這是QVariants中的枚舉問題。我最初的實現是將實際(無符號)整數值保存在QVariant中。現在我嘗試了範圍枚舉,但我遇到了QVariants的這個問題。但是,我轉回原來的實現與你的伎倆在枚舉中的最低/最高值。謝謝。 – CppChris