문제

위젯 트리의 계층 적보기를 얻으려고 노력했습니다.

코드는 잘 작동하며 다음과 같은 멋진 나무를 생성합니다.

ROOT(Animal): 
| 
| 
|___Not extinct:
.         |                       (red)
.         |_____BIRD--------------(blue)
.         |                       (green)
          | 
          |                       (red)
          |_____Mammal------------(blue)
          |                       (green)
          | 
          |                       (red)
          |_____Reptile-----------(blue)
                                  (green)

트리 계층 구조가있는 코드는 다음과 같습니다.

def myTreeWDG(self):
    ....
    """define tree"""
    self.obj_animalTreeWDG = QtGui.QTreeWidget(self.obj_viewGroupBox)
    self.obj_animalTreeWDG.setGeometry(QtCore.QRect(10, 20, 191, 131))
    self.obj_animalTreeWDG.setObjectName("obj_animalTreeWDG")
    """ROOT: animal"""
    obj_parent1 = QtGui.QTreeWidgetItem(self.obj_animalTreeWDG)
    """not extinct:"""
    obj_childView1_1 = QtGui.QTreeWidgetItem()
    obj_parent1.addChild(obj_childView1_1)
    """bird"""
    obj_childView1_1_1 = QtGui.QTreeWidgetItem()
    obj_childView1_1.addChild(obj_childView1_1_1)
    """3: red, blue, green"""
    total=3
    self.insert_treeLeaves(total,obj_childView1_1_1)
    """mamal"""
    obj_childView1_1_2 = QtGui.QTreeWidgetItem()
    obj_childView1_1.addChild(obj_childView1_1_2)
    """3: red, blue, green"""
    total=3
    self.insert_treeLeaves(total,obj_childView1_1_2) 
    """reptile"""
    obj_childView1_1_3 = QtGui.QTreeWidgetItem()
    obj_childView1_1.addChild(obj_childView1_1_3)
    """3: red, blue, green"""
    total=3
    self.insert_treeLeaves(total,obj_childView1_1_3) 
    """connect event"""
    QtCore.QObject.connect(self.obj_animalTreeWDG, QtCore.SIGNAL('itemClicked(QTreeWidgetItem*, int)'), self.obj_treeViewInput)

다음은 잎을 나무에 추가하는 코드입니다.

def insert_treeLeaves(self,total,tree_directParent):
    for i in range(0,total):
        """leaves with color name"""
        tree_child_leaf = QtGui.QTreeWidgetItem()
        tree_directParent.addChild(tree_child_leaf)

그런 다음 나무를 클릭 할 때마다 알려주는 기능이 있으며 클릭 한 위치가 있습니다.

def obj_treeViewInput(self,item,col):
    print "obj _Qtree : pressed"
    print "name:" item.text(col)

문제는 터치 된 잎 (빨간색)이 새나 다른 아버지에 속하면 어떻게 얻을 수 있다는 것입니다. 즉, 다음 출력을 얻는 방법은 다음 마우스를 클릭하십시오 : 동물 - 멸종되지 않음 - 포유류 - (빨간색).

모든 의견과 제안은 높이 평가됩니다.

도움이 되었습니까?

해결책

이 항목의 경로를 인쇄 할 수있는 각 QtreeWidgetItem의 방법은 어떻습니까?

이 방법에서는 재귀를 사용하여 항목의 부모의 완전한 경로를 얻을 수 있으며 ( "qtreewidgetItem * parent () 메소드가이를 수행 할 수 있습니다). 현재 항목의 텍스트를 부모의 경로에 추가합니다! 항목에 부모가 없을 때 재귀를 중지합니다.

나는 당신의 질문을 이해하기를 바랍니다. 이것은 당신에게 조금 도움이됩니다!

자신의 qtreewidgetitem 클래스가 있습니까? 특정 역할을 사용하여이를 달성 할 수 있습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top