我将QVariantMap作为QVariant存储在另一个QVariant中。我需要在slot函数中的这个嵌套QVariantMap中添加文件。以下是我目前所拥有的:-
QVariantMap map = data["nestedMap"].toMap(); //first copy
map[newfield] = assingCoolStuff(); //add new filed to nestedMap
data["nestedMap"] = map; // second copy ?
如果我是正确的,那么它会两次创建nestedMap的副本,并且运行速度会很慢。有什么方法可以优化它吗?
template<class T>
T* cast(QVariant& variant)
{
if (variant.userType() == qMetaTypeId<T>())
return reinterpret_cast<T*>(variant.data());
return 0;
}
QVariantMap &map = *cast<QVariantMap>(data["nestedMap"]);
map[newfield] = assingCoolStuff();
如果data["nestedMap"]
可能不包含QVariantMap
,则需要更改代码。