我将自定义数据类型的对象存储在QStandardListItems中。我通过调用以下对象来恢复这些对象:

i.data(Qt::UserRole + 1).value<LiteReach>();


这只会在堆栈中创建一个新对象。我对它们所做的任何更改都是暂时的。

有没有一种方法可以将基础对象存储在itemData中,以便可以直接对其进行操作?
如果不是,更改itemData的首选方法是什么?

我不希望每次修改对象时都调用setData,因为它将消耗大量资源。

最佳答案

您可以使用允许访问具体数据对象的指针,而不是像上面那样将整个数据复制到QVariant中。

问题在于value()返回数据的副本。因此,如果您进行任何修改,则将副本从堆栈中删除后,它们便会消失。

如果您不想使用指针,我想您必须坚持使用setData()

10-08 20:23