使用 pyqt5 (SIGNAL) 拖放

use*_*069 5 python drag-and-drop pyqt qt-designer pyqt5

我正在尝试在 pyqt5 中为我的 listwidget 进行拖放(带有图像或文件)。我可以找到很多pyqt4的例子,但是有一个部分在新版本中不起作用:

在“dropevent”中:

self.emit(QtCore.SIGNAL("dropped"), links)
Run Code Online (Sandbox Code Playgroud)

并在主窗体中:

self.connect(self.view, QtCore.SIGNAL("dropped"), self.pictureDropped)
Run Code Online (Sandbox Code Playgroud)

我阅读了很多帖子,但似乎无法找到应该如何用 pyqt5 写下来的答案。任何人都可以帮我解决这个问题吗?

链接到整个示例: PyQT4: Drag and drop files into QListWidget

yur*_*snm 2

简单的。

  1. 信号必须先出现
  2. 插槽作为参数出现。
  3. 您必须仅在信号创建后进行连接
  4. 您必须仅在连接建立后发出。

这里我们举一个小例子:

self.signalOwner.mySignal.connect(self.slotFunction)
Run Code Online (Sandbox Code Playgroud)

在您的示例中,假设视图拥有信号,而 pictureDropped 是您的槽函数,因此:

self.view.dropped.connect(self.pictureDropped)
Run Code Online (Sandbox Code Playgroud)

请记住,您的信号必须发出某些类型或根本不发出任何信号,并且您的 @pyqtSlot 函数必须接收相同的类型,并且该函数接收与信号发出的相同数量的参数。

我不久前发表了一篇关于图像拖放的文章,在弄清楚如何接受事件以及类的行为方式方面遇到了很多困难,它比仅信号更深一点,因此,如果您需要,这里是 POST: D