gpt4 book ai didi

python - pyqt dropEvent 不会触发

转载 作者:行者123 更新时间:2023-12-01 05:13:56 26 4
gpt4 key购买 nike

我正在尝试将一个列表项拖到另一个列表上。 DragEnterEvent 触发得很好,我执行 e.accept(),但是 dropEvent 从不触发。代码如下:

class LocalList(QtGui.QListWidget):
def __init__(self, parent):
super(LocalList, self).__init__(parent)
self.parent = parent
self.setDragEnabled(True)

def mouseMoveEvent(self, e):
mimeData = QtCore.QMimeData()
mimeData.setText(self.currentItem().text())
drag = QtGui.QDrag(self)
drag.setMimeData(mimeData)
dropAction = drag.exec_()

class RemoteList(QtGui.QListWidget):
def __init__(self, parent):
super(RemoteList, self).__init__(parent)
self.parent = parent
self.setAcceptDrops(True)

def dragEnterEvent(self, e):
print "MimeText: " + e.mimeData().text()
e.accept()

def dropEvent(self, e):
print "DROPPED"
print self.parent.localdir + "/" + e.mimeData().text()
e.accept()

为了澄清,我正在从 LocalList 拖动到 RemoteList。 mousMoveEvent 被触发得很好,因为 mimeData().text() 在 RemoteList 的 DragEnterEvent 中打印得很好。但我认为它接受的不正确,因为 dropEvent 从未被触发,并且当我将鼠标悬停在 RemoteList 上时,它没有“拖放到此处”图标。

最佳答案

您必须同时实现 dragEnterEventdragMoveEvent。请参阅here对于另一个类似的问题

这似乎可以满足您的需要,相当简短而优雅:)

class DragDropListWidget(QtGui.QListWidget):
def __init__(self, type, parent=None):
super(DragDropListWidget, self).__init__(parent)
self.setDefaultDropAction(QtCore.Qt.MoveAction)
self.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
self.setAcceptDrops(True)

关于python - pyqt dropEvent 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com