为什么QPersistentModelIndex无法存储在QStandardItemModel的项之一中?

问题描述

背景

在我的模型中,我必须保留一项数据,即对另一项的引用。

QPersistentModelIndex的文档中说:

QPersistentModelIndex是模型索引,可以由应用程序存储,以后可以用来访问模型中的信息。

QStandardItemModel::setData接受QVariant作为值,而该值又可以是constructed from QPersistentModelIndex,因此我可以编写如下内容

...
auto *model = new QStandardItemmodel();
auto *referencedItem = new QStandardItem("Test");
auto *item = new QStandardItem();

model->appendRow(referencedItem);
item->setData(QPersistentModelIndex(referencedItem->index()),Qt::UserRole);

// the next line prints "Test"
qDebug() << item->data(Qt::UserRole).toPersistentModelIndex().data().toString();
...

代码会编译并打印:

测试

已接受的其他主题答案,例如Storing persistent information about items in viewHow to update a QTableView cell with a QCombobox selection?,也建议使用QPersistentModelIndex

问题

QPersistentModelIndex的文档中还说:

注意:您不能在模型的一项中存储QStandardItemModelQPersistentModelIndex

这是否意味着像上面的代码一样使用QPersistentModelIndex,即:

item->setData(QPersistentModelIndex(referencedItem->index()),Qt::UserRole);

错误的,为什么不应该这样做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)