我有一个QTableWidget,它在程序以不可编辑和不可选择的单元格开始时创建。当我右键单击它们时,单元格上的数字将增加1,这很好。
我现在想做的是,如果我按住Ctrl键并单击一个单元格,则该单元格将变成一个可编辑的单元格,我可以在其中写一个数字,输入数字后,该单元格将再次变得不可编辑。 / p>
到目前为止,我对修饰符没有问题,它们可以工作,但是我无法更改单元格的标志
def mousePressEvent(self,event):
modifiers = event.modifiers()
it = self.itemAt(event.pos())
if modifiers & QtCore.Qt.ControlModifier:
item.setFlags(itemIsEditable)
else:
if event.button() == QtCore.Qt.LeftButton:
it.setText(str(round(float(it.text())+1)))
elif event.button() == QtCore.Qt.RightButton:
it.setText(str(round(float(it.text()) - 1)))
答案 0 :(得分:1)
您必须使用editItem()
方法
def mousePressEvent(self,event):
modifiers = event.modifiers()
it = self.itemAt(event.pos())
if modifiers & QtCore.Qt.ControlModifier:
it.setFlags(it.flags() | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable)
self.editItem(it)
else:
if event.button() == QtCore.Qt.LeftButton:
it.setText(str(round(float(it.text())+1)))
elif event.button() == QtCore.Qt.RightButton:
it.setText(str(round(float(it.text()) - 1)))