Qt5中的兄弟模型功能

时间:2015-02-19 13:43:02

标签: qt5 siblings

我们有以下代码通过模型检索TYPE类型的数据,模型是自定义代理模型。下一个QSortFilterProxyModel需要这个来做出有关元素过滤的决定。代码实际上是由两个函数组合而成:在项目中,我们通常有一些与某些ROW相关的任意索引,并使用它来从另一个包含TYPE数据的预定义列中检索数据。

QModelIndex index = sourceModel()->index(row, COLUMN1, sourceParent); /* sourceParent is always'invalid' - retrieving data from top-level items*/
ModelIndex sibling = index.sibling(row, COLUMN2);
return sibling.data(Qt::EditRole).value<TYPE>();

这对Qt4运行良好,但当转移到Qt5时,兄弟姐妹变得“无效”。我想知道发生了什么,考虑到数据实际存在,我看到,通过将代码更改为以下

return sourceModel()->index(sourceRow, COLUMN2,    sourceParent).data(Qt::EditRole).value<TYPE>();

-works fine

1 个答案:

答案 0 :(得分:1)

查看implementation of sibling(),我无法确定是什么原因导致它在您的情况下返回无效索引。与Qt4 implementation相比,也许围绕IndexMap使用。

但是,为什么不简单地使用sourceModel()->index(sourceRow, COLUMN2, sourceParent)的解决方案,因为它似乎已经是你真正想做的了?