QAbstractItemModel에서 파생 된 작업 트리 모델이 있고 QSortFilterProxyModel 하위 클래스를 사용하여 필터를 적용하여 특정 조건의 자식 노드 만 표시하려고합니다. 예를 들어, 나는 다음과 같은 트리가 : 나는 노드가 이름을 가지고있는 조건이 나무를 필터링 할QSortFilterProxyModel을 사용하여 자식 노드 만 부모와 함께 표시하는 트리 모델을 필터링하는 방법?
A
- B
-- C1
-- C1
-- C1
--- C2
- D
- E
을 ==이 같은 C1과 그들의 아이들과 C1 및 디스플레이 노드 만 :
C1
C1
C1
- C2
A
- B
-- C1
-- C1
-- C1
--- C2
내 생각이 나 있습니다 :
이미 재 구현 부분적으로 내가 원하는하지만 여전히 C1 노드의 부모와 조부모가 표시됩니다 무엇을 할 수 filterAcceptsRow()와 서브 클래스가 부모 노드가 filterAcceptsRow() 테스트를 통과해야합니다. 그렇습니까? filterAcceptRows() 또는 다른 메서드를 구현하여이를 설명 할 수 있습니까?
나는이 질문을 qtcentre와 qtforum에서 언젠가 되돌려 보았지만 어떤 유용한 대답도 얻지 못했습니다. QSortFilterProxyModel 서브 클래스의 인덱스를 filterAcceptsRow() 내부에서 beginMoveRows 및 endMoveRows를 사용하여 직접 이동하려고 시도했지만 위험한 const_cast로 인해 테스트 응용 프로그램이 충돌합니다.
와우 같은 사용자 정의 프록시 모델을 사용하여 고려할 수 있습니다! 정말 아무도 이것에 대답 할 수 있습니까? – ksming