Op 06/09/2016 om 21:20 schreef Thompson, Adam B.:
All,
I co-develop an application that uses a QTreeView to display the
hierarchical contents of external files. The contents of the tree can
become quite a chore to sift through, so I added a means of filtering
via a QSortFilterProxyModel. This works as expected, but the user may
want to specify a pattern that matches a node deep in the model’s
structure but not any of the node’s ancestors. As such, the
breadth-first filtering mechanism provided in QSortFilterProxyModel
isn’t appropriate for our needs.
I modified filterAcceptsRow to work in a depth-first manner to verify
my desired filtering effect would work, which it does. However, as
expected, it yields a huge performance penalty since it performs a
depth-first search for each row in the model. This is because the
(recursive) depth-first logic is called for the same nodes many times.
I added a crude caching scheme which really doesn’t properly mitigate
the performance issue.
My question: can anyone provide some tips on how to properly subclass
QAbstractProxyModel so I can provide some custom depth-first filtering
capabilities? (Sorting isn’t really necessary at the moment, really
just filtering.)
Perhaps it is possible to do this in a more efficient way using the
underlying data structure instead? That is: make it possible to query
each node in your underlying structure directly instead of using the
model API to iterate down the tree each time? How big is your model in
terms of depth and number of nodes?
André
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest