2016-04-13 3 views
0

Привет, я хочу перетащить файл (изображение) в свой gui с помощью PySide, однако я не могу заставить его работать. Я не могу заставить его войти в функцию dropEvent. Моя цель, которую я пытаюсь перетащить, - это QGraphicsView, поэтому фильтр не может захватить весь gui, потому что я хочу перетащить в него два изображения.Перетащите файл в gui с помощью 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_() 

Благодаря

ответ

1

Вы должны принять перетаскивание события, прежде чем Qt будет обрабатывать события после падения:

def dragEnterEvent(self, event): 
    event.accept() 
Смежные вопросы