QVariant相关操作

   //构造一个包含整型数据的 QVariant 对象
   int intValue = 42;
   QVariant variantInt = QVariant::fromValue(intValue);
   //把对象转为int
   int value = variantInt.toInt();
   qDebug() << "variantMap is: " << value;

   //QVariantMap 赋值
   //方式一:
   QVariantMap variantMap = {
       {"intValue",10},
       {"strValue", "strValue"},
       {"doubleValue",0.8}
   };
   std::map<QString,QVariant> mapVal = variantMap.toStdMap();

   for(auto val : mapVal){
       qDebug() << val.first << val.second;
   }

   //方式二:使用inser方法
   variantMap.clear();
   variantMap.insert("intValue",variantInt);
   variantMap.insert("strValue","strValue");
   variantMap.insert("doubleValue",0.8);

   //方式三: 键值对赋值
   variantMap.clear();
   variantMap["intValue"] =  variantMap["intValue"];
   variantMap["strValue"] = "strValue";
   variantMap["doubleValue"] = 0.8;

   //获取QVariantMap中值的方式
   //1:通过键获取 !!!键值拿到的时候 QVariant 对象,还需要做一层转换
   QVariant varintVal = variantMap["intValue"];
   if(varintVal.isValid()){
       //判断值是否有效,有效时进行赋值
       int val =varintVal.toInt();
   }

   //2: 通过value方法获取,可以给一个默认值,在没有对应的值的时候返回默认值
   QVariant defalutValue(80);
   int val = variantMap.value("intValue",defalutValue).toInt();
   qDebug() << "variantMap is: " << variantMap.value("intValue",QVariant(80)).toInt();

   //将QVariantMap转成字符串
   QJsonObject obj = QJsonObject::fromVariantMap(variantMap);
   QJsonDocument doc(obj);
   QString mapString = doc.toJson(QJsonDocument::Compact);
   qDebug() << "mapString is :" << mapString;

   //将QString 转 QVariantMap
   QVariantMap res;
   doc = QJsonDocument::fromJson(mapString.toUtf8());
   if (doc.isNull() || !doc.isObject()) {
       res = QVariantMap();
   }
   obj = doc.object();
   res = obj.toVariantMap();

   //QVariantList
   //把QVariant包装起来,QList<QVariant>,QList中的方法在QVariantList同样适用
   QVariantList variantList;
   QVariantList list;
   list << 10 << "Hello" << 3.14; // 向列表中添加整数、字符串和浮点数

   qDebug() << "list.at(0) is: " << list.at(0).toInt();
   list.append(134);

   //遍历QVariantList,可以根据具体类型进行解析
   for(const QVariant &value : list){
       if(value.type() == QMetaType::Int){
           qDebug() << "Integer value:" << value.toInt();
       }else if (value.type() == QMetaType::QString){
           qDebug() << "String value:" << value.toString();
       }else if (value.type() == QMetaType::Double){
           qDebug() << "Double value:" << value.toDouble();
       }
   }
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值