2012-03-19 3 views
4

QTreeView에 연결된 QAbstractItemModel 하위 클래스에서 작업하고 있습니다. 재귀적인 Name = Value 구조를 가지고 있습니다. 모든 인덱스는 자체 하위 트리를 가질 수 있습니다. 거의 모든 트리보기가 그렇게 작동하기 때문에 왼쪽에는 문제가 없습니다. 문제는 때로는 오른쪽의 하위 트리 만 - 값 목록을 원한다는 것입니다. 지금 당장 가지고 있듯이 일 것입니다. 그러나 Qt는 절대로 오른쪽에 rowCount()을 호출하지 않으며 하위 트리가 있어야한다는 것을 결코 깨닫지 못합니다.여러 열의 QTreeView/QAbstractItemModel 하위 트리

지금 가지고있는 솔루션은 기본적으로 별도의 모델을 만들어서 setIndexWidget을 사용하여 이러한 상황이 발생할 때마다 별도의 트리보기를 제공하는 것입니다. 괜찮습니다. 그러나 트리 뷰를 곳곳에 던지지 않고도 하위 트리를 오른쪽에 표시하고 싶습니다. 저의 모델은 저기에 서브 트리가 있다고 응답하지만, Qt는 결코 그것들을 묻지 않습니다. 옆에 그대로

- Root  | 
    - Name 1 | Value 
     Name 2 | - Compound Value 
       |  Sub-value 1 
       |  Sub-value 2 
     Name 3 | + Compound Value (collapsed) 
    + Name 4 | Value 

은, 화합물 값은 +받지 않습니다 년대와 -의이 조금 불분명 한 경우

,이 기본 내가 달성하고 싶다 어떤 생각이다 왜냐하면 Qt는 그 열에서 hasChildren()이나 rowCount()을 결코 호출하지 않기 때문에, 내 모델이 그렇다고 대답 할지라도 질문을 받으면 아이들이 있습니다.

결국 하위 트리 뷰를 제공해야한다면 괜찮습니다. 나는 먼저 그것을하는 더 좋은 방법이 없다는 것을 확신하고 싶다.

+0

솔루션을 찾았습니까? 비슷한 상황이지만 추상 항목 모델은 첫 번째 열 아래에서만 하위 트리를 허용하는 것으로 보입니다. – subhacom

+0

확장 할 필요가있는 경우 두 번째 열에 별도의 트리 뷰를 넣어서 해결했습니다. 가장 우아한 방법은 아니지만 쉽고 빠릅니다. 당신이 그것을보기 좋게 보이게하려면, QTreeView를 서브 클래스해야 할 것입니다. 지난 5 월부터 Qt와 관련하여 어떤 작업도하지 않았으므로 과거에는별로 도움이되지 않습니다. – parkovski

답변

0

내가 이중 트리 내 자신,

+ a  | A 
    + b  | + B 
    c  |  C 

내가 너희를 예를 들어, 빈 데이터를 반환하여 이름 2 이름 3 사이의 공간을 만들 수 있습니다 본 적이 무엇부터

같은 몇 가지 일을보기 구현하기 위해 노력하고있어 이름 2 아래에 빈 문자열이 있으면 + infront를 가질 수 있습니다.

그래서 이런 일이

def data(self, index, role): 
    ... 
    if item.pathdepth() > 3 : 
     return " " 
    ... 

def flags(self, index) 
    ... 
    if item.pathdepth() > 3 : 
     return Qt.Some_Role but not others 
    ... 

내가 아직 역할에 대해 충분히 모른다 도움이 될 수 있지만, '공백'이 사용자가 selectabe되지 않도록 당신은 선택과 편집을 해제 할 수있다.

하지만 두 번째 열에서 나무를 얻는 방법을 찾지 못했습니다.