Python QtreeWidget:ツリー階層を返す
質問
ウィジェットツリーの階層ビューを取得しようとして立ち往生しました。
コードは正常に動作し、そのような素敵なツリーを生成します:
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)
問題は、タッチされた葉(赤)がBirdまたは他の父親のものである場合にどのように取得できるか、つまり、次の出力を取得してマウスをクリックする方法です: 動物-絶滅していない-哺乳類-(赤)。
すべてのコメントと提案は大歓迎です。
解決
このアイテムへのパスを印刷できる各QtreeWidgetItemのメソッドはどうですか。
このメソッドでは、再帰を使用してアイテムの親の完全なパスを取得し(これを行う" QTreeWidgetItem * parent()const"メソッドがあります)、現在のアイテムのテキストを親のパスに追加できます!アイテムに親がない場合、再帰を停止します。
私はあなたの質問を理解したことを望み、これがあなたを少し助けてくれることを願っています!
独自のQTreeWidgetItemクラスはありますか?特定の役割を使用してこれを実現できます...
所属していません StackOverflow