Glisser-déposer avec un filtre d'événements
Bonsoir,
j'ai 2 QTableWidget avec des event Filtrer, je souhaiterai ajouter le drag and drop entre les 2.
je voudrais le faire en passant par l'eventfiltrer.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| self.ui.web_table.installEventFilter(self)
self.ui.local_table.installEventFilter(self)
...
def eventFilter(self, watched, event):
if watched.objectName() in ["local_table", "web_table"]:
if event.type() == QEvent.DragLeave:
print("DragLeave", watched.objectName())
elif event.type() == QEvent.DragEnter:
print("DragEnter", watched.objectName())
elif event.type() == QEvent.DragMove:
print("DragMove", watched.objectName())
elif event.type() == QEvent.Drop:
print("Drop", watched.objectName()) |
Mais je n'ai que "DragEnter" qui s'active que je rentre ou sorte d'un des 2 widgets...
Je ne comprends pas pourquoi...
Lorsque je rentre dans "local_table" et ressorts :
Code:
1 2
| DragEnter local_table
DragEnter local_table |
pourquoi n'est-ce pas Enter puis Leave ?!
Je veux bien quelques conseils.
Si je passe par :
Code:
1 2 3 4 5 6 7 8 9 10 11
| class LocalTable(QTableWidget):
def dragEnterEvent(self, event):
print("dragEnterEvent")
event.accept()
def dropEvent(self, event):
print("dropEvent")
event.accept()
self.ui.local_table.__class__ = LocalTable |
cela fonctionne mais j'aimerai vraiment passer par l'eventfiltrer car je surveille déjà les resizes et les touches de clavier...
Merci à vous.