如何解决为什么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 view和How to update a QTableView cell with a QCombobox selection?,也建议使用QPersistentModelIndex
。
问题
QPersistentModelIndex
的文档中还说:
注意:您不能在模型的一项中存储
QStandardItemModel
的QPersistentModelIndex
。
这是否意味着像上面的代码一样使用QPersistentModelIndex
,即:
item->setData(QPersistentModelIndex(referencedItem->index()),Qt::UserRole);
是错误的,为什么不应该这样做?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。