我正在尝试从 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_()
Run Code Online (Sandbox Code Playgroud)
这是dragEnterEvent:
def on_workArea_dragEnterEvent(self, event):
print(event.format())
if (event.mimeData().hasFormat('application/x-item')):
event.accept()
print('accepted')
else:
event.ignore()
Run Code Online (Sandbox Code Playgroud)
最后是 dropEvent 代码:
def on_workArea_dropEvent(self, event):
print('dropped')
Run Code Online (Sandbox Code Playgroud)
当我开始拖放操作时,光标有一个带斜线的圆圈,就像小部件不接受放置一样,但我将 QGraphicsView、workArea 设置为接受放置。有人可以帮我让drop工作并解释为什么在光标位于QGraphicsView上之前像素图不会显示在光标后面。谢谢你。
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |