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())