2017-10-08 20 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