改变QList的麻烦,实际上是QVariant而不复制它

时间:2016-05-17 13:40:23

标签: qt qvariant

不幸的是,我们的软件使用了一个名为ProcessContext的数据保持对象,它将数据保存在字符串索引映射中(QMap<QString, QVariant>。这个模式现在不会改变,但我需要填充更复杂的数据而不是字符串和数字。

我的具体数据是QList<MyClass>,其中包含我自己的类的实例。令人惊讶的是,这样的列表实际上可以转换为QVariant。我问过这个问题:Can I conveniently converty QVariant back to QList<MyType>?

程序如下:

QList<MyType> list_original;
QVariant variant = QVariant::fromValue(list_original);
// And later on...
 if( variant.canConvert<QList<MyType>>() ) {
     QList<MyType> list_new = variant.value<QList<MyType>>();
     ...
 }

现在问题是,对list_new所做的任何更改都不会影响QVariant variant中的数据。

因此,我的问题是如何确保QVariant返回对其所涵盖数据的引用,而不是复制。

0 个答案:

没有答案