找回密码
 立即注册
收起左侧

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

0
回复
691
查看
[复制链接]

尚未签到

来源: 2023-11-21 21:08:11 显示全部楼层 |阅读模式
1Qter豆
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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了