سؤال

وأنا متورطون في محاولة للحصول على عرض الهرمي شجرة القطعة.

والرمز يعمل بشكل جيد ويولد شجرة جميلة مثل ما يلي:

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