1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
   |  
class ListWidget(QListWidget):
    def __init__(self, parent=None):
        super(ListWidget, self).__init__(parent)
        # ... 
        self.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
        self.setDefaultDropAction(QtCore.Qt.MoveAction)
        self.setSelectionMode(QtGui.QAbstractItemView. ? )
        self.setSelectionMode(QtGui.QAbstractItemView. ? )
 
    def mouseMoveEvent(self, event):
        self.startDrag(event)
 
    def mousePressEvent(self, event):
        # Utile si tu veux appliquer une sélection particulière des objets
        QListWidget.mousePressEvent(self, event)
 
    def startDrag(self, event):
        if not self.selectedIndexes():
            return
 
        mimeData = QtCore.QMimeData()
        mimeData.setText("files")
        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)
        # Eventuellement, tu places ici une icône de ton choix
        result = drag.start(QtCore.Qt.MoveAction)
        event.accept()
 
    def dragMoveEvent(self, event):
        if event.mimeData().hasText():
            event.setDropAction(QtCore.Qt.MoveAction)
            event.accept()
 
        else:
            event.ignore()
 
    def dropEvent(self, event):
        # Ici tu peux récupérer les infos mises dans mimeData, si utile
        QListWidget.dropEvent(self, event) | 
Partager