我有 QThread ,用于更新 QTableWidget 列值。当用户双击该列的一行时, QThread 将停止更新值,以允许用户编辑上次读取的值。
如果用户按 Enter ,则会发出cellChanged(int, int)
信号,我可以继续更新值。但是在 Esc 的情况下,我没有得到任何变化信号,我不知道何时重新开始更新新值。
如果我重新实现 QTableView eventfilter方法来监听 Esc 键,我可以重新启动值的更新,但前提是我按 Esc 键2倍。我第一次离开 QTableWidgetItem 。是否有可能首先听取它?
提前致谢。
答案 0 :(得分:1)
您真正想要的是细胞编辑完成的通知,无论可能发生的情况如何。
实现这一目标的一种方法是重新实现一个负责编辑单元格的虚拟方法,然后使用它来发出自定义信号:
class TableWidget(QtGui.QTableWidget):
editingFinished = QtCore.pyqtSignal()
def closeEditor(self, widget, hint):
QtGui.QTableWidget.closeEditor(self, widget, hint)
self.editingFinished.emit()