2017-01-16 2 views
0

내 응용 프로그램은 도구 라이브러리 관리자입니다. 목록 및 도구 목록이 포함 된 트리보기가 있습니다. 또한 도구 목록을 보여주는 tableview가 있습니다.QtAbstractItemModel. QtreeView와 QtableView를 함께 사용

트리 뷰에서 목록을 클릭하면 어린이 목록으로 tableview를 표시하려고합니다. 트리에서 하나의 도구를 클릭하면 위젯을 전환하고 도구의 편집 양식을 표시합니다.

트 리뷰에서 선택된 노드의 하위 노드로만 테이블 뷰를 제한하려면 어떻게합니까?

내 데이터 모델은 사용자 지정 qAbstractItemModel입니다.

답변

-1

이것이 내 자신의 질문에 대한 완전한 대답인지 잘 모르겠지만 훨씬 더 가깝습니다. tableview에서 setRootIndex()를 호출하고 qTreeView에서 현재 항목을 전달할 수 있습니다. 이렇게하면 현재 트리 항목의 하위 항목 만 테이블 목록에 표시됩니다.

나에게도 여전히 도구와 하위 목록이 모두 표시되지만 필자는이를 다른 문제로 생각합니다.

+0

별도의 답을 쓰는 대신 답변에 답글을 달아주세요. 고마워. – NameRakes

+0

내 의견은 또 다른 대답이 아니 었습니다. 그것은 아직 논의되지 않은 새로운 대답이었습니다. – sliptonic

+0

알았어. 트리보기에서 선택한 항목 아래에있는 자식 만 테이블보기로 매핑하고 표시하는 전략은 무엇입니까? – NameRakes

0

나는 과 비슷한 상황 (별로 동일하지 않음!)을 가지고 있습니다. 경험을 공유하기 전에 목록/도구를 구성하는 항목으로 구성된 데이터베이스가 있다고 가정합니다.

한 가지 가능한 솔루션은 두 개의 사용자 정의 모델 (QTableView과 관련된 MyTableViewModel -> QAbstractItemModel) 테이블 뷰 트리 (QTreeView과 관련된 말, MyTreeViewModel -> QAbstractItemModel)보기 하나 하나를 만드는 것입니다.

두 사용자 정의 모델은과 동일한 에이전트로 에 의해 공급되어야합니다. 키 차이은 트리 뷰 모델이 전체 데이터베이스 및 하위 집합, 즉 주 목록에서 선택한 항목의 하위 항목 만있는 테이블 뷰 모델에서 작동한다는 것입니다. 전체 매핑과 데이터베이스의 부분 매핑으로 생각하십시오.

사용자가 트리 뷰에서 노드의 상위 목록을 클릭하면 MyTableViewModel에 의해 선택 될 수있는 신호를 내고 자식 만 채우며 QTableView으로 표시됩니다.

동일한 에이전트가 두 모델을 제공하기 때문에 하나의 모델에 의한 기본 데이터의 변경 사항이 다른 모델에 반영되어야한다는 점에서 데이터 무결성을 유지할 수 있어야합니다. 이 솔루션은 제 응용 프로그램에서 정말 잘 작동합니다. 희망이 당신을 위해 너무 일합니다!

+0

@sliptonic 다른보기 (테이블, 트리 등)는 모두 ** 유형 **보기입니다. 귀하의 경우 * 모든 데이터 *를 서로 다른 두 가지보기에 매핑했습니다. 뷰가 데이터를 필터링 할 수있는 방법은 없습니다 *. 내 솔루션은 데이터를 필터링하는 모델을 작성하여 문제를 해결 한 다음 'QTableView'가 축소 된 데이터를 표시합니다. QT의 모델/뷰/위임 아키텍처를 통해 우리는이를 가능하게합니다. 내 해결책이 올바르지 않으면 내 문제에 대한 이해가 잘못되었거나 올바른 문제가 제기되지 않았습니다. – NameRakes

+0

보기에 표시된 데이터를 별도의 모델을 만드는 것과 비교하여 필터링하는 쉬운 방법이 있다면 여기에 게시하십시오. 감사. – NameRakes

관련 문제