У меня есть рабочая модель дерева, полученная из QAbstractItemModel, и я хочу отфильтровать ее, используя подкласс QSortFilterProxyModel, чтобы отображать только дочерние узлы определенных критериев.Например, у меня есть следующее дерево:
A
- B
-- C1
-- C1
-- C1
--- C2
- D
- E
Я хочу отфильтровать это дерево с условием, что узел имеет имя == C1, и отображать только узлы с C1 и их дочерние элементы следующим образом:
C1
C1
C1
- C2
У меня уже есть повторно реализованный подкласс с filterAcceptsRow (), который может частично выполнять то, что я хочу, но он все равно покажет родителя и прародителя узлов C1:
A
- B
-- C1
-- C1
-- C1
--- C2
Я думаю, этопотому что для того, чтобы дочерние узлы даже рассматривались, их родитель должен пройти тест filterAcceptsRow (), я прав?Как я могу реализовать filterAcceptRows () или другие методы, чтобы он мог делать то, что я описал?
Я задавал этот вопрос когда-то еще в qtcentre и qtforum, но не получил никакого полезного ответа.Я пытался переместить индексы подкласса QSortFilterProxyModel напрямую, используя beginMoveRows и endMoveRows внутри filterAcceptsRow (), но это просто приводит к аварийному завершению тестового приложения из-за опасного const_cast.