我正在尝试设置一个应用程序,可以接受文件的拖放操作。因此,我正在寻找一种方法,在它们被拖入时提取路径。
目前,我已经启用了应用程序右侧的拖放并允许拖放文本,但我不知道如何处理拖放文件。
我正在使用:
def PTE_dragEnterEvent(self, e):
if e.mimeData().hasFormat('text/plain'):
e.accept()
else:
e.ignore()
def PTE_dropEvent(self, e):
newText = self.ui.fileListPTE.toPlainText() + '\n\n' + e.mimeData().text()
self.ui.fileListPTE.setPlainText(newText)
这是对来自 Zetcode拖放教程 提供的代码进行轻微修改。
我没能完全让@ekhumoro的答案为我工作,但它给了我更多查找的地方。我发现将文件拖放到QListWidget中, 这对我有所帮助。
除了ekhumoro提出的建议之外,我还需要实现拖动事件。 我最终使用的代码如下:
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
newText = self.ui.fileListPTE.toPlainText()
for url in event.mimeData().urls():
newText += '\n' + str(url.toLocalFile())
self.ui.fileListPTE.setPlainText(newText)
self.emit(QtCore.SIGNAL("dropped"))
else:
event.ignore()
hasUrls
是一个函数,因此使用它的条件始终会评估为True
。 - Cuadue