我将自定义数据类型的对象存储在QStandardListItems中。我通过调用以下对象来恢复这些对象:
i.data(Qt::UserRole + 1).value<LiteReach>();
这只会在堆栈中创建一个新对象。我对它们所做的任何更改都是暂时的。
有没有一种方法可以将基础对象存储在itemData中,以便可以直接对其进行操作?
如果不是,更改itemData的首选方法是什么?
我不希望每次修改对象时都调用setData,因为它将消耗大量资源。
最佳答案
您可以使用允许访问具体数据对象的指针,而不是像上面那样将整个数据复制到QVariant中。
问题在于value()
返回数据的副本。因此,如果您进行任何修改,则将副本从堆栈中删除后,它们便会消失。
如果您不想使用指针,我想您必须坚持使用setData()
。