어쩌면 나는이 모든 잘못에 대해 생각하고 있을지 모르지만, 은 Qt에서 작업 트리 모델을 갖기 때문에 아이템 클래스에 데이터를 래핑해야합니다.Pyside의 트리 모델
QTreeView 용으로 만든 각 모델에서 사용자 지정 Node 또는 TreeItem 클래스 (종종 형식 (개체))를 구현해야한다는 것을 알 수있었습니다. 이것은 여러 가지 이유 때문에 이상하게 여깁니다 :
) 모델이 데이터를 직접 추출 할 수있는 전체 시점이 아닙니까? 노드 또는 TreeItem 클래스는 여분의 수하물처럼 보입니다.
b) 트리 뷰에 특별한 항목/노드 클래스가 필요한 경우에도 왜 그 클래스가 QObject 일종의 것이 아니겠습니까? 지금까지 본 Node 구현물에는 get/set 부모/자식 메소드 및 속성 모음이 있습니다. 하지만 그것은 QObject를 사용하는 것이 이미 모두 내장되어 있으므로 사용하지 않는 것이 좋습니다.
트리 모델을 구현하기 위해 여분의 Node 클래스가 필요하다는 것을 알게 된 나의 직감 (나쁘다)은 Qt 프레임 워크 디자인의 갭 또는 그것.
나는 QStandardItem과 QStandardItemModel을 모호하게 알고 있지만, 왜 QtGui가 아닌 QtCore에 속하는지 묻는다. 다른 모델은 & modelItems이다. QtGui로 이들 클래스를 그룹화하면보기 & 모델이 혼합되어 나타납니다. QtGui 클래스에서 상속받지 못했기 때문에 QtGui에있는 이유를 이해할 수 없습니다.
누구나이 디자인을 정당화 할 수 있다면, 내가 어떻게 오해하고 있는지 설명해주십시오. (또는 저의 좌절감과 관련 있습니다) 나는 그것에 대해 듣고 싶습니다!
감사합니다.
듣기에 안심입니다. 데이터/setData 메소드가 데이터를 직접 제공 할 수 있어야합니다. 그러나 공식 Qt 예제에서도 어디서나 입증 된 것을보기가 어렵습니다. 당신이 나에게 대단히 도움이 될 2 깊은 트리 모델의 구현을 제공 할 수 있다면. createIndex() 및 parent와 같이 정의해야 할 메소드가 있지만 내부적으로 (또는 뷰와 통신 할 때) 어떻게 사용되는지는 약간 불투명 한 것 같습니다. –
아마 내가 가장 어려워하는 것은 작동의 흐름을 이해하고 순환 종속성을 느끼는 것입니다. 데이터 요청에 인덱스가 전달되고 해당 인덱스는 행, col, parent -에 전달되는 createIndex()에서 가져오고 부모는 인덱스가있는 자식에서 비롯되지만 인덱스는 부모 - 그리고 난 길을 잃었 어. –