问题描述
背景
在我的模型中,我必须保留一项数据,即对另一项的引用。
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 (将#修改为@)