我正在使用 QTreeView 和两个基于 QSortFilterProxyModel 的过滤器。
我需要获取 QTreeView 中当前显示项目的列表,所以我采用选定的索引(通过 ->selectionModel()->selectedIndexes()),将它们传递给简单的递归函数,但总是得到 SIGSEGV。在调试时,我发现调用堆栈结束的地方——它在 QVector::fill 中的某个地方。
也许我做错了什么?如果我通过索引,mapToSource()
我会得到所有项目,而不仅仅是显示的项目。
迭代器函数很简单:
void CollectionTreeWidget::iterator(const QModelIndex & index, QModelIndexList & items)
{
int count = p->dateFilterProxy->rowCount(index);
for (int i=0; i<count; i++) {
QModelIndex t = index.child(i, 0);
iterator(t, items);
}
}
这dateFilterProxy
是一个用作 QTreeView 模型的模型。rowCount
代码在调用时崩溃。