PDA

View Full Version : [pyqt]Event - catch only Qt.Key_Delete



kosset
22nd April 2011, 02:07
Hello!

I would like to change behavior of Key_Delete for QTableWidget, but because of using Designer I don't want to make any changes in py file with form. So instead of reimplementing QTableWidget, I do something like this:


class MyForm(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)

self.ui.tableWidget.__class__.keyPressEvent = self.test

def test(self,event):
if event.key() == Qt.Key_Delete:
print "test"

return QTableWidget.keyPressEvent(self, event)

The problem is that I don't know how to keep original behavior of other keys than Qt.Key_Delete. I have already changed last line like this:


return QtGui.QTableWidget.keyPressEvent(self, event)
return QtGui.QTableWidget.event(self, event)

but it doesn't work.

svarti
26th August 2015, 07:28
return QtGui.QTableWidget.keyPressEvent(self.ui.tableWidg et, event)

anda_skoa
26th August 2015, 18:41
Or you could use an event filter, see QObject::eventFilter()

Cheers,
_