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