2009-11-05 133 views
2

我有一个正常的QTreeView,一个自定义的QAbstractItemModel和一个自定义的QSortFilterProxyModel。如何在QSortFilterProxyModel过滤时自动展开QTreeView中的项目?

我重新实现了QSortFilterProxyModel :: filterAcceptsRow以我想要的方式从我的模型中过滤项目,但是现在我希望那些过滤的项目在树视图中展开。

显而易见的解决方案是,当找到接受的项目时,从QSortFilterProxyModel :: filterAcceptsRow()发出信号,然后将该信号连接到QTreeView :: expand()。

但是,QSortFilterProxyModel :: filterAcceptsRow()是const的,所以我不能从该方法内部发出信号。 QSortFilterProxyModel没有任何其他信号可以帮助我......我开始认为我将不得不继承QTreeView,我宁愿不这样做(少代码==更好)。

那么,有什么办法可以自动展开filtermodel接受的那些项目吗?

回答

2

QTreeView有一个“expandAll”插槽,可以在设置模型后调用。我会认为这应该做你想做的事。

相关问题