【发布时间】:2021-08-12 20:22:27
【问题描述】:
在我使用 PyQt 编写的应用程序中,我想通过将项目从 QListWidget 拖放到 QLabel 来执行拖放功能(根据 QListWidget 中项目的文本在 QLabel 上设置文本)。为了做到这一点,我创建了继承表单 QLabel 的新类以添加 dragEnterEvent 和 dropEvent。我的标签代码:
class Label(QLabel):
def __init__(self, parent):
super(Label, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
print('drag')
print(event.mimeData().text())
if event.mimeData().hasText():
event.accept()
else:
event.ignore()
def dropEvent(self, event):
print('drop')
self.setText(event.mimeData().text())
问题是当我从 QListWidget 拖动项目时它没有文本,所以我的代码不起作用。据我了解,这是因为当我从 QListWidget 拖动项目时,我不是在拖动文本,而是整个小部件(因为据我了解,列表中的项目不是字符串,而是 QListWidgetItem)。根据我在这里发现的不同问题,我想我也应该为拖动的项目创建一个新类,但此时我不知道是否应该为 QListWidget 或 QListWidgetItem 做。或者也许我应该以完全不同的方式做到这一点?
【问题讨论】: