0
#include "QtCore"
#include "QMap"
#include "qdebug.h"
#include "qjsondocument.h"



class cclass{
public:
    int var;
};
Q_DECLARE_METATYPE(cclass);


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

cclass object1;
object1.var=40;

 QVariant variant= QVariant::fromValue(object1);


  QVariantMap map;
    map.insert("variant",variant);



 QJsonDocument document=  QJsonDocument::fromVariant(map);

 qDebug()<<document;

    return a.exec();
}

qdebug 返回QJsonDocument({"variant":null}) 我认为它应该返回 object1 的值,但它返回 null。为什么会这样?我想使用 qt 在 json 中配对字符串和一个类。我该怎么做

4

1 回答 1

0

由于QVariant处理自定义类型的方式。

Qt 文档中,Note: If you are working with custom types, you should use the Q_DECLARE_METATYPE() macro to register your custom type.

换句话说,QVariant::fromValue()不知道如何处理您的cclass类型,而只是创建一个 null QVariant,然后在QJsonDocument中相应地对其进行序列化。

于 2018-07-18T15:44:27.130 回答