У меня уже есть заполненный qTableWidget, и я хотел бы изменить содержимое одной ячейки.
Поэтому я дважды щелкаю по этой ячейке, предыдущий текст становится подсвеченным, я ввожу новый текст и нажимаю клавишу «возврат».
Я ловлю сигнал «нажата клавиша», и подключенный слот содержит функцию, которая печатает содержимое измененной ячейки.
# Override qTableWidget class to catch event
class MyQTableWidget(PyQt4.QtGui.QTableWidget):
def __init__(self, parent=None):
super(MyQTableWidget, self).__init__(parent)
def keyPressEvent(self, event):
super(MyQTableWidget, self).keyPressEvent(event)
key = event.key()
if key == PyQt4.QtCore.Qt.Key_Return or key == PyQt4.QtCore.Qt.Key_Enter:
self.emit(PyQt4.QtCore.SIGNAL("returnPressed"))
...
# Connect the "keypress" signal
self.tableWidget_casesList.connect(self.tableWidget_casesList, PyQt4.QtCore.SIGNAL("returnPressed"), self.renameCase)
...
# Print the modified text of the cell
def renameCase(self):
# Get the new text entered by user
newCaseName = str(self.tableWidget_casesList.item(self.tableWidget_casesList.currentRow(), 1).text())
print("New case's name : {0:s}".format(newCaseName))
Pb: печатный текст является оригинальным, а не измененным. Мне нужно снова нажать клавишу «возврат», чтобы напечатать новый текст…
Есть ли какое-то конкретное действие, чтобы принудительно обновить qTableWidget перед выполнением функции слота?