Qt QVariant常用用法及QVariant和QList互转

IT宅个人博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Qt QVariant常用用法及QVariant和QList互转.

前言

最近在搞树形间拖拽时发现 QMimeData 的重载函数 retrieveData 返回的是一个QVariant,但是我需要返回的是QList<QTreeWidgetItem>,这下可难到了。

然后仔细查看可以使用自定义类型,于是使用了一下,真的很棒。接下来看一下QVariant的常用用法。

QVariant 基本用法(QString 为例)

QVariant 转 QString 互转

    QString str = "https://itzhai.cn";
    QVariant var;
    var.setValue(str);

    QString varStr = var.toString();
    qDebug() << "varStr: " << varStr;

结果:
Alt

QVariant 和 QList互转

   QList<QString> list = {"chiyuba.com", "itzhai.cn"};
    QVariant var;
    var.setValue(list);

    QList<QString> varList = var.value<QList<QString> >();
    qDebug() << varList;

结果:
Alt

QVariant 和 QList互转(MyStruct 为自定义结构体)

// 定义结构体
typedef struct myCus {
     QList<QTreeWidgetItem *> lists;
     QList<int> list2;
} MyCus;

// 注册自定义类型
Q_DECLARE_METATYPE(MyCus);
  // 使用自定义类型
    MyCus my;
    my.list2 = {0, 1};
    QVariant var;
    var.setValue(my);
    MyCus m = var.value<MyCus>();
    qDebug() << m.list2;

结果:
Alt

总结

Variant用起来还是挺方便的,可以存储很多的类型。多看文档,多看文档,多看文档。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值