QTableWidget,停止编辑QTableWidgetItem

时间:2018-01-03 20:20:10

标签: python python-3.x pyqt pyqt5

我有一个包含大量项目的QTableWidget。我想这样做,以便在编辑单元格时按Return键(与Qt.Key_Return相同),它将选择并编辑下一个单元格。但是,如果我调用nextrow函数,它将不会执行任何操作,如果我已经编辑了QTableWidgetItem。它在编辑任何内容时都有效,它将编辑所选行。

self.table = QTablewidget()
... # Populate widget with QTableWidgetItems

def nextrow(self, row)
    column = 1
    self.table.editItem(self.table.item(row, column))

我认为无法实际禁用该编辑模式,它完全忽略了从将文本设置为某些内容,禁用编辑权限的所有内容,因为我已经在编辑它。就我看来,我找不到任何方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

您需要从QTableWidget捕获按键事件。为此,您需要继承QTableWidget并从内部实现更改行功能。

self.table = CustomTableWidget()
... # Populate widget with QTableWidgetItems

class CustomTableWidget(QtWidgets.QTableWidget):

    def __init__(self):
        super().__init__()

    def keyPressEvent(self, event):
        key = event.key()
        if key == QtCore.Qt.Key_Return:
            self.select_next_row()

    def select_next_row(self):
        self.setCurrentCell(self.currentRow() + 1, self.currentColumn())
        self.edit(self.currentIndex())