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

时间:2018-08-08 15:55:05

标签: qt c++11

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

1 个答案:

答案 0 :(得分:0)

OP提到它适用于:

QVariant variant(QVariant::fromValue(static_cast<void*>(obj)));
auto test = static_cast<QObject*>(variant.value<void*>());

qDebug() << obj2; // MyClass(0x8a99838

根据this answer

中的说明