使用Ctrl +单击使单元格可编辑(在创建具有不可编辑的单元格的表之后)

时间:2018-06-25 12:25:05

标签: python pyqt qtablewidget

我有一个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)))

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