pyqt5中,table处于编辑状态,点击其他地方,怎么达到table不处于编辑状态
时间: 2023-11-26 20:04:07 浏览: 97
当表格处于编辑状态时,你可以通过调用 `QTableWidget` 的 `closeEditor()` 方法来使其退出编辑状态,并且保存当前编辑的内容。
你可以在主窗口的 `mousePressEvent()` 和 `keyPressEvent()` 事件中,检查当前是否有单元格处于编辑状态,如果有,则调用 `closeEditor()` 方法,使其退出编辑状态。
代码示例:
```python
from PyQt5 import QtWidgets, QtGui
class MyTableWidget(QtWidgets.QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
def mousePressEvent(self, event: QtGui.QMouseEvent):
# 检查是否有单元格处于编辑状态
if self.currentItem() and self.currentItem().isEditing():
# 退出编辑状态
self.closeEditor(self.currentItem(), QtWidgets.QAbstractItemDelegate.NoHint)
super().mousePressEvent(event)
def keyPressEvent(self, event: QtGui.QKeyEvent):
# 检查是否有单元格处于编辑状态
if self.currentItem() and self.currentItem().isEditing():
# 退出编辑状态
self.closeEditor(self.currentItem(), QtWidgets.QAbstractItemDelegate.NoHint)
super().keyPressEvent(event)
```
在上面的代码中,我们继承了 `QTableWidget` 并重写了 `mousePressEvent()` 和 `keyPressEvent()` 方法。当用户在表格上点击鼠标或按下键盘时,我们先检查当前是否有单元格处于编辑状态,如果有,则调用 `closeEditor()` 方法退出编辑状态,然后再调用父类的相应方法处理事件。
你可以将这个自定义表格类用于你的主窗口中,这样当你在表格上编辑某个单元格时,如果你点击其他地方或按下键盘,它会自动退出编辑状态,以便你可以进行其他操作。
阅读全文