我被困在试图获得小窗口树的层次结构视图。

在代码工作正常,并且产生这样的一个很好的树:

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 *父()const的”方法来做到这一点),并且在当前项目的文本添加到其父母的道路!您停止递归当一个项目没有任何父。

我希望我理解你的问题,这可以帮助你一点点!

你有你自己的QTreeWidgetItem类?你可以使用特定的角色来实现这个...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top