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;
结果:
QVariant 和 QList互转
QList<QString> list = {"chiyuba.com", "itzhai.cn"};
QVariant var;
var.setValue(list);
QList<QString> varList = var.value<QList<QString> >();
qDebug() << varList;
结果:
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;
结果:
总结
Variant用起来还是挺方便的,可以存储很多的类型。多看文档,多看文档,多看文档。