2016-03-01 35 views
0

我想創建2 QListWidget(姑且稱之爲「A」和「B」)具有以下將&拖放行爲:PyQt的,拖放:禁止複製,只允許移動

  • 條目可以從「A」複製到「B」

  • 條目不能從「A」移動到「B」

  • 項不能被移動或從「B」至「A」

  • 複製

最後一點不是問題,但我無法找到一種方法來禁用移動操作,同時允許從「A」複製到「B」。

有人能指點我在哪裏看?

謝謝。

+0

我假設你仍然需要移動項目* *內「A」。 – ekhumoro

+0

不,不在列表「A」內移動。也許排序,但我認爲這與這個問題無關。 – rmweiss

回答

0

您將不得不將mimeData設置爲獨佔值(可能類似於「myapplication/somewidget-somefeature」),請參閱dragEnterEvent in the draggable example以瞭解如何接受/拒絕拖動。

dropEvent對同樣的例子在如何設置mimeData

0

如果您不需要內名單 「A」 移動項目,解決方法很簡單:

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

這對我來說並不能解決問題2。我仍然可以通過按命令鍵從'copy'切換到'move'。 – rmweiss

1

這似乎解決我的問題:

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

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