QSortFilterProxyModel 排序后获取原始行号

动态 未结 0 141
小小草
小小草 LV1 2023年9月23日 23:40 发表
在QSortFilterProxyModel中,可以使用mapToSource()方法将代理模型中的索引映射到源模型中的索引。因此,如果您想要获取排序后的行号对应的原始行号,可以使用以下代码: ```cpp int sortedRow = 5; // 假设要获取排序后第5行对应的原始行号 QModelIndex proxyIndex = proxyModel->index(sortedRow, 0); // 获取代理模型中的索引 QModelIndex sourceIndex = proxyModel->mapToSource(proxyIndex); // 将代理模型中的索引映射到源模型中的索引 int sourceRow = sourceIndex.row(); // 获取原始行号 ``` 这里假设要获取排序后的第5行对应的原始行号。首先,使用index()方法获取代理模型中的索引。然后,使用mapToSource()方法将代理模型中的索引映射到源模型中的索引。最后,使用row()方法获取原始行号。 请注意,如果您在代理模型中使用了自定义的lessThan()函数进行排序,则可能需要在mapToSource()方法中传递排序列的索引,以确保正确地映射索引。例如: ```cpp int sortedRow = 5; int sortColumn = 1; // 假设按照第2列排序 QModelIndex proxyIndex = proxyModel->index(sortedRow, sortColumn); QModelIndex sourceIndex = proxyModel->mapToSource(proxyIndex); int sourceRow = sourceIndex.row(); ``` 在这个例子中,我们假设按照第2列进行排序。因此,在获取代理模型中的索引时,我们使用了sortColumn作为第二个参数。然后,在mapToSource()方法中也传递了sortColumn,以确保正确地映射索引。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复