2016-04-13 7 views
0

Hallo Ich möchte eine Datei (Bild) in meine GUI mit PySide ziehen, aber ich kann es nicht funktionieren. Ich kann es nicht in die DropEvent-Funktion bringen. Mein Objekt, in das ich zu ziehen versuche, ist eine QGraphicsView, so dass der Filter nicht die gesamte GUI übernehmen kann, weil ich zwei Bilder hineinziehen möchte.Ziehen Sie eine Datei in eine GUI mit PySide

class Consumer(QMainWindow, Ui_MainWindow, QComboBox, QtGui.QWidget): 


    def __init__(self, parent=None): 
     self.paylod = None 
     super(Consumer, self).__init__(parent) 
     self.setupUi(self) 
     self.chkApplyCompression.stateChanged.connect(self.makecompress) 
     self.viewCarrier1.setMouseTracking(True) 
     self.viewCarrier1.installEventFilter(self) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.viewCarrier1) 

    def eventFilter(self, source, event): 
     if (event.type() == QtCore.QEvent.QDropEvent and 
      print('yay?') 
     return QtGui.QWidget.eventFilter(self, source, event) 





    def dropEvent(self, e): 
     print("yay") 

    def dragEnterEvent(self, *args, **kwargs): 
     print("Yay!!") 





if __name__ == "__main__": 
    currentApp = QtGui.QApplication(sys.argv) 
    currentForm = Consumer() 
    currentForm.show() 
    currentApp.exec_() 

Dank

Antwort

1

Sie müssen die Drag eingeben Ereignis akzeptieren, bevor Qt ein nachfolgendes Drop-Ereignis behandelt:

def dragEnterEvent(self, event): 
    event.accept()