Frage

habe ich blieb bei dem Versuch, die hierarchische Ansicht eines Widgets Baum zu erhalten.

Der Code funktioniert gut und erzeugt einen schönen Baum wie folgt aus:

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

Hier ist der Code mit der Baumhierarchie:

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)

Hier ist der Code, um die Blätter in den Baum hinzuzufügen:

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)

Dann haben wir die Funktion, die uns der Baum jedes Mal erzählt geklickt wird, und wo es angeklickt wurde:

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

Das Problem ist, wie können wir, wenn die berührte Blatt (rot) erhalten gehört zum Vogel oder einem anderen Vater, das heißt, wie die folgende Ausgabe bekommen einige Mausklick geben: Animal - Nicht ausgestorben - Säugetier -. (Rot)

Alle Anmerkungen und Vorschläge sind sehr willkommen.

War es hilfreich?

Lösung

Was ist ein Verfahren, bei jedem QTreeWidgetItem, in dem Sie den Pfad zu diesem Artikel drucken könnten.

Bei dieser Methode Sie Rekursion verwenden könnte den vollständigen Pfad des Elements Eltern zu bekommen (Sie haben eine „QTreeWidgetItem * parent () const“ Methode, dies zu tun), und Sie das aktuelle Element Text zu seinem übergeordneten Pfad hinzuzufügen! Sie haben die Rekursion stoppen, wenn ein Element keine Eltern haben.

Ich hoffe, dass ich verstehe Ihre Frage und das hilft dir ein wenig!

Haben Sie Ihre eigene QTreeWidgetItem Klasse? Sie könnten eine besondere Rolle, dies zu erreichen verwenden ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top