Я пытаюсь выполнить операцию перетаскивания из QTreeWidget в QGraphicsView. dragStart () работает, и dragEnterEvent () работает, но dropEvent () никогда не вызывается. Также растровое изображение не отображается, пока курсор не войдет в QGraphicsView, что не является проблемой, но я просто подумал, что оно появится, как только начнется перетаскивание. Вот моя функция startDrag:
def on_list_startDrag(self, supportedActions):
#Retreive the item that was clicked on
currentPart = self.ui.list.currentItem()
part = currentPart.text(0)
drag = QtGui.QDrag(self.ui.list)
mime = QtCore.QMimeData()
print(part)
#retreive that associated graphics file
icon = QtGui.QIcon('drawings/FULL/' + part + '.svg')
pixmap = icon.pixmap(102,122)
selected = QtGui.QImage('drawings/FULL/' + part + '.svg')
data = pickle.dumps(selected)
mime.setData('application/x-item', data)
#mime.setImageData(QtGui.QImage('drawings/FULL/' + part + '.svg'))
drag.setMimeData(mime)
drag.setHotSpot(QtCore.QPoint(pixmap.width()/2, pixmap.height()/2))
drag.setPixmap(pixmap)
drag.exec_()
Вот это dragEnterEvent:
def on_workArea_dragEnterEvent(self, event):
print(event.format())
if (event.mimeData().hasFormat('application/x-item')):
event.accept()
print('accepted')
else:
event.ignore()
Наконец код dropEvent:
def on_workArea_dropEvent(self, event):
print('dropped')
Когда я запускаю операцию перетаскивания, курсор имеет кружок с косой чертой, как виджет не принимает капли, но я установил QGraphicsView, workArea, чтобы принимать капли. Может кто-нибудь, пожалуйста, помогите мне заставить работать каплю и объяснить, почему растровое изображение не отображается за курсором, пока курсор не находится над QGraphicsView. Спасибо.