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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.