c++ - 为什么 QPersistentModelIndex 不能存储在 QStandardItemModel 的项目之一中?
问题描述
背景
在我的模型中,我必须保留一个项目的数据,即对另一个项目的引用。
A
QPersistentModelIndex
是一个模型索引,可以由应用程序存储,然后用于访问模型中的信息。
QStandardItemModel::setData
接受QVariant
作为一个值,它又可以从构造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();
...
代码编译并打印:
测试
对另一个主题的接受答案,例如存储有关视图中项目的持久信息以及如何使用 QCombobox 选择更新 QTableView 单元格?, 也建议使用QPersistentModelIndex
.
问题
的文档QPersistentModelIndex
还说:
注意:您不能将
QStandardItemModel
's存储QPersistentModelIndex
在模型的某个项目中。
这是否意味着,QPersistentModelIndex
在上面的代码中使用类似,即:
item->setData(QPersistentModelIndex(referencedItem->index()), Qt::UserRole);
是错误的,为什么不应该这样做?
解决方案
推荐阅读
- r - 带有列表列的 Rcpp 数据帧返回(AsIs 在哪里?)
- python - 在 Jupyter notebook 中保存 pivottablejs 的配置
- image-processing - Pytorch/torchvision - 修改数据集对象的图像和标签
- c# - IDE0044(使字段只读)取决于目标框架?
- arrays - BigQuery - UNNEST 中引用的值必须是数组。UNNEST 在 [5:18] 包含 STRUCT ... 类型的表达式
- django - 如何在 get_success_url 中引用来自不同模型的 slug?
- c - C 中的无意义优化
- flask - 路径开头带有默认参数的烧瓶路线
- ruby-on-rails - 如何通过在 ruby 中循环参数来替换参数?
- java - 您能否解释一下 zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toInstant() 和 zonedDateTime.toInstant() 何时给出不同的输出?