QTableWidget,停止QTableWidgetItem的编辑
Posted
技术标签:
【中文标题】QTableWidget,停止QTableWidgetItem的编辑【英文标题】:QTableWidget, Stop editing of QTableWidgetItem 【发布时间】:2018-01-03 20:20:10 【问题描述】:我有一个包含很多项目的 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】:您需要从 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())
【讨论】:
非常感谢。我已经对它进行了子类化,但是天知道为什么,您实际上需要在调用编辑之前设置要选择的当前单元格。我用来做选择的功能,显然也不适用于这个目的......以上是关于QTableWidget,停止QTableWidgetItem的编辑的主要内容,如果未能解决你的问题,请参考以下文章
QTableWidget,停止QTableWidgetItem的编辑