我有一个数据QVariantMap
。在QVariant
中,我可以存储在元系统中声明和注册的自定义类。
我知道确实存在QVariant::value<XXX>()
但由于我不知道先验的XXX
是什么,所以我不能这样做。
所以我试图用 QVariant::value<QObject*>
和 qvariant_cast
转换为 QObject*
,但它似乎有一个空指针:
我的尝试:
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)
OP提到它适用于:
QVariant variant(QVariant::fromValue(static_cast<void*>(obj)));
auto test = static_cast<QObject*>(variant.value<void*>());
qDebug() << obj2; // MyClass(0x8a99838
如本回答中所述