//构造一个包含整型数据的 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();
}
}
01-15
7115
07-22
4283
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交