QTableWidget - Uneditable cell.
-
Hello!
I would need to make the first column of my Table not editable. I have tried the following code and some variations of it, but cant figure out how to do it:
self.programCorrelationTable.setItem(tableRow, 0, QtWidgets.QTableWidgetItem(str(row[0])).setFlags(QtCore.Qt.ItemFlag.ItemIsEditable))
Any help is very appreciated..
thank you!
-
@Igor86 said in QTableWidget - Uneditable cell.:
self.programCorrelationTable.setItem(tableRow, 0, QtWidgets.QTableWidgetItem(str(row[0])).setFlags(QtCore.Qt.ItemFlag.ItemIsEditable))
This is wrong for several reasons.
Should be:item = QtWidgets.QTableWidgetItem(str(row[0])) item.setFlags(item.flags() & ~QtCore.Qt.ItemFlag.ItemIsEditable) self.programCorrelationTable.setItem(tableRow, 0, item)
-
@Igor86 said in QTableWidget - Uneditable cell.:
QtWidgets.QTableWidgetItem(str(row[0])).setFlags(QtCore.Qt.ItemFlag.ItemIsEditable)
We are in C++, not JavaScript/jQuery! We do not "chain" calls like this. This is an expression with return result as per void QTableWidgetItem::setFlags(Qt::ItemFlags flags). Which is
void
so what you have should not compile?Not to mention, you are trying to set it to editable, when you say you want it not editable!
Try e.g.
EDIT Oh dear, @jsulm has beaten me to reply! He does not take time to explain like I do ;-) Follow his code, read my explanation! :)
-
@SGaist
OMG, I didn't even notice it was Python! :)Which makes it even worse, and confirms my dislike for Python. In that case I wonder what Python/PyQt/PySide does with the return result of
setFlags()
, which is "void"/"nothing"? Probably something like treats it asNone
and passes tosetItem()
...None
/nullptr
?