szmf 发表于 2023-11-21 21:08:11

使用QVariant保存自定义类型的问题

Qt版本:6.5.1

网上搜到的教程都说必须对自定义类型调用宏 Q_DECLARE_METATYPE 向 Qt 的元系统声明这个自定义类型。我创建了一个小例子进行测试,发现可以直接调用 QVariant::setValue() 保存自定义类型,不需要调用 Q_DECLARE_METATYPE。
代码如下:
````````````````````````````````````````````
#include <QCoreApplication>
#include <QVariant>

struct Entity
{
    int value;
    QString str;
};

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

    Entity entity;
    entity.value = 12345;
    entity.str = "hello, world";

    QVariant variant;
    variant.setValue(entity);

    Entity receiver = variant.value<Entity>();
    qDebug() << receiver.value;
    qDebug() << receiver.str;

    return a.exec();
}
````````````````````````````````````````````
这段代码有什么问题吗?是否因为Qt版本更新后不再需要调用 Q_DECLARE_METATYPE

页: [1]
查看完整版本: 使用QVariant保存自定义类型的问题