我想創建2 QListWidget(姑且稱之爲「A」和「B」)具有以下將&拖放行爲:PyQt的,拖放:禁止複製,只允許移動
條目可以從「A」複製到「B」
條目不能從「A」移動到「B」
項不能被移動或從「B」至「A」
複製
最後一點不是問題,但我無法找到一種方法來禁用移動操作,同時允許從「A」複製到「B」。
有人能指點我在哪裏看?
謝謝。
我想創建2 QListWidget(姑且稱之爲「A」和「B」)具有以下將&拖放行爲:PyQt的,拖放:禁止複製,只允許移動
條目可以從「A」複製到「B」
條目不能從「A」移動到「B」
項不能被移動或從「B」至「A」
最後一點不是問題,但我無法找到一種方法來禁用移動操作,同時允許從「A」複製到「B」。
有人能指點我在哪裏看?
謝謝。
您將不得不將mimeData設置爲獨佔值(可能類似於「myapplication/somewidget-somefeature」),請參閱dragEnterEvent
in the draggable example以瞭解如何接受/拒絕拖動。
見dropEvent
對同樣的例子在如何設置mimeData
如果您不需要內名單 「A」 移動項目,解決方法很簡單:
self.listA.setDragEnabled(True)
self.listB.setAcceptDrops(True)
這對我來說並不能解決問題2。我仍然可以通過按命令鍵從'copy'切換到'move'。 – rmweiss
這似乎解決我的問題:
class ListB(QtGui.QListWidget):
def __init__(self, parent):
super(ListB, self).__init__(parent)
self.setAcceptDrops(True)
def supportedDropActions(self):
return QtCore.Qt.CopyAction
我假設你仍然需要移動項目* *內「A」。 – ekhumoro
不,不在列表「A」內移動。也許排序,但我認爲這與這個問題無關。 – rmweiss