不幸的是,我们的软件使用了一个名为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
返回对其所涵盖数据的引用,而不是复制。