2017-10-08 21 views
1

我创建了一个包含表的子项的treewidget。我想访问QtableWidget的内容,但我找不到如何做到这一点?从Qtable这是QTreeWidget的孩子获取内容

的treewidget样子: treewidget with tables as children

我已经生成像treewidget:

 software = QTreeWidgetItem(['Software']) 
     hardware = QTreeWidgetItem(['Hardware']) 
     beide = QTreeWidgetItem(['Beide']) 
     andere = QTreeWidgetItem(['Andere'])   
     i = 0 
     for key, value in sorted(data.items()): 
       if value['Subtype'] == 'Software': 
        sub = software 
       if value['Subtype'] == 'Hardware': 
        sub = hardware 
       if value['Subtype'] == 'Beide': 
        sub = beide 
       if value['Subtype'] == 'Andere': 
        sub = andere 

       l1 = QTreeWidgetItem(sub) 

       if value['Privacy'] == 'Voorzichtig': 
        l1.setBackgroundColor(0, QColor('orange')) 
       if value['Privacy'] == 'Vertrouwelijk': 
        l1.setBackgroundColor(0, QColor('red')) 
        l1.setTextColor(0, QColor('white')) 

       l1.setText(0, value['sDesc']) 

       self.treeMainDisplay.addTopLevelItem(l1) 

       l1_child = QTreeWidgetItem(l1) 

       self.item_table = QTableWidget() 
       self.item_table.verticalHeader().setVisible(False) 
       self.item_table.horizontalHeader().setVisible(False) 
       self.item_table.setColumnCount(5) 
       self.item_table.setRowCount(5) 
       c1_item = QTableWidgetItem("%s" % value['sDesc'].encode('utf-8')) 
       self.item_table.setItem(0, 0, c1_item) 
       c2_item = QTableWidgetItem("%s" % value['Type'].encode('utf-8')) 
       self.item_table.setItem(1,0, c2_item) 

       qt_child = self.treeMainDisplay.setItemWidget(l1_child, 0, self.item_table) 

     self.treeMainDisplay.addTopLevelItem(software) 
     self.treeMainDisplay.addTopLevelItem(hardware) 
     self.treeMainDisplay.addTopLevelItem(beide) 
     self.treeMainDisplay.addTopLevelItem(andere) 

我遍历treewidgetitems但不知道如何访问表内容:

def testItems(self): 
    iterator = QTreeWidgetItemIterator(self.treeMainDisplay) 
    while iterator.value(): 
     item = iterator.value() 
     if not item.text(0): 
      #Get Table Object? 
      # item.item(0,0).text() 
     else: 
      print item.text(0) 
     iterator += 1 

看来我无法访问QTableWidget对象,我只能得到QTreeWidgetItem对象。

所有反馈意见都非常感谢!

回答

1

该项目的小部件必须使用itemWidget方法是通过树型控件访问:

def testItems(self): 
    iterator = QTreeWidgetItemIterator(self.treeMainDisplay) 
    while iterator.value(): 
     item = iterator.value() 
     if not item.text(0): 
      # Get Table Object 
      table = self.treeMainDisplay.itemWidget(item, 0) 
     else: 
      print item.text(0) 
     iterator += 1 
+0

非常感谢您! – user3097526