PyQT,Drag& Drop:禁用复制,仅允许移动

时间:2016-03-01 15:52:48

标签: qt drag-and-drop pyqt

我想通过以下拖放行为创建2个QListWidget(让我们称之为#34; A"以及" B"):

  • 参赛作品可以从" A"到" B"

  • 参赛作品不能从" A"到" B"

  • 不能移动或复制条目" B"到" A"

最后一点不是问题,但我还没有找到一种方法来禁用移动操作,同时允许从" A"到" B"。

有人能指出我在哪里看吗?

感谢。

3 个答案:

答案 0 :(得分:1)

这似乎解决了我的问题:

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

    def supportedDropActions(self):
        return QtCore.Qt.CopyAction

答案 1 :(得分:0)

您必须将mimeData设置为独占值(可能类似于“myapplication / somewidget-somefeature”),请参阅dragEnterEvent in the draggable example以了解如何接受/拒绝拖动。

请参阅如何设置mimeData的同一示例dropEvent

答案 2 :(得分:0)

如果您不需要在列表“A”中移动项,解决方案很简单:

    self.listA.setDragEnabled(True)
    self.listB.setAcceptDrops(True)