我有一个QVariantMap
的数据。在QVariant
内,我可以存储在元系统中声明和注册的自定义类。
我知道确实存在QVariant::value<XXX>()
,但是由于我不了解先验XXX
是什么,所以我不能这样做。
因此,我尝试同时使用QObject*
和QVariant::value<QObject*>
都转换为qvariant_cast
,但是它似乎持有一个空指针:
我的尝试
MyClass* obj = new MyClass();
QVariant variant = QVariant::fromValue<MyClass*>(obj); // it works;
qDebug() << variant; // Qvariant(MyClass*,)
QObject* obj2 = variant.value<QObject*>();
qDebug() << obj2; // QObject(0x0)
答案 0 :(得分:0)
OP提到它适用于:
QVariant variant(QVariant::fromValue(static_cast<void*>(obj)));
auto test = static_cast<QObject*>(variant.value<void*>());
qDebug() << obj2; // MyClass(0x8a99838
中的说明