Qt 如何在不知道内部类型的情况下从QVariant中提取自定义数据指针



我有一个数据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

如本回答中所述

最新更新