get updated value from comboBox in a QTableWidget

39 Views Asked by At

I need to get 3 values from a cell in a QTableWidget so I tried a comboBox. I also have checkboxes in the table. I'm able to get the value of the comboBox when it is clicked, but I need the value it is changed to.

 self.tblLayers = QtWidgets.QTableWidget(len(layerManager.getChars()), 4)
 self.fillTable()
 self.tblLayers.resizeColumnsToContents()
 self.tblLayers.resizeRowsToContents()
 self.tblLayers.verticalHeader().setVisible(False)
 self.tblLayers.horizontalHeader().setVisible(True)
 self.tblLayers.setHorizontalHeaderLabels(['Character','CTRL','GEO','T/R/ '])

 self.tblLayers.cellChanged.connect(self.onCellChanged)#this gets value of checkboxes
 self.tblLayers.currentCellChanged.connect(self.getComboValue)#this gives initial value of combobox

 def fillTable(self):
        for row in range(len(layerManager.getChars())):
            for col in range(4):
                chkLayer = QtWidgets.QTableWidgetItem()
                chkLayer.setCheckState(QtCore.Qt.CheckState.Checked)
                cmbTRoptions = QtWidgets.QComboBox()
                cmbTRoptions.addItems(['T', 'R', ' '])
                if col == 0:
                    self.tblLayers.setItem(row, col, 
                    QtWidgets.QTableWidgetItem(layerManager.getChars()[row]))
                if col == 1:
                    self.tblLayers.setItem(row, col, chkLayer)
                if col == 2:
                    self.tblLayers.setItem(row, col, chkLayer)
                if col == 3:
                    self.tblLayers.setCellWidget(row, col, cmbTRoptions)

 def getComboValue(self,row,column):
        widget = self.tblLayers.cellWidget(row, column)
        if widget != None:
            print(widget.currentText())
0

There are 0 best solutions below