使用 ctrl+click 创建单元格 editable(在使用非 editable 单元格创建 table 之后)

Make a cell editable (after creating the table with non-editable cells) with ctrl+click

我有一个 QTableWidget,它是在程序以不可编辑和不可选择的单元格开始时创建的。当我右键单击它们时,单元格上的数字会增加 1,这很好。

我现在想做的是,如果我ctrl+点击一个单元格,这个单元格变成一个可编辑的单元格,我可以在里面写一个数字,当输入数字时,单元格又变成不可编辑的.

到目前为止我对修改器没有任何问题并且它们可以工作,但我无法设法更改单元格的标志

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

你必须使用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)))