python - How to override event (dropEvent) of a widget in dynamic UI of PyQt? -


what doing/ have far :

i using qt-designer create pyqt .ui file loading in python script using quiloader gives me access widgets/components :

self.ui.tree_widget_of_items ( qtreewidget created in qt-designer) 

i able read , write values of widgets , able use signal on treewidget :

self.ui.tree_widget_of_items.itemselectionchanged.connect(self.myfunction) 

what trying ?

  • i want override dropevent of treewidget in python script

what have tried didn't work :

self.ui.tree_widget_of_items.dropevent = self.drop_action  def drop_action(self,e):     print "drop action" 

i have tried assigning own function dropevent of treewidget doesn't triggered when drop item on treewidget.

i have tried :

self.ui.tree_widget_of_items.dragenterevent = self.drop_action 

i made sure drag , drop enabled on treewidget.

you have install event filter on tree , implement qobject.eventfilter method in class.

example (install event filter):

self.ui.tree_widget_of_items.installeventfilter(self) 

and implement eventfilter:

def eventfilter(self, o, e):     if e.type() == qevent.dragenter: #remember accept enter event         e.acceptproposedaction()         return true     if e.type() == qevent.drop:         # handle event         # ...         return true     return false #remember return false other event types 

see qobject.installeventfilter , qobject.eventfilter


Comments