Module saePisan.view.components.DragDropListView
Classes
class DragDropListView (parent=None)-
Expand source code
class DragDropListView(QListView): def __init__(self, parent=None): super().__init__(parent) self.parent = parent self.setDragEnabled(True) self.setAcceptDrops(True) self.setDropIndicatorShown(True) self.setDefaultDropAction(Qt.DropAction.MoveAction) self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection) def dragEnterEvent(self, event): if event.mimeData().hasText(): event.acceptProposedAction() else: super().dragEnterEvent(event) def edit(self, index, trigger, event): return False def dragMoveEvent(self, event): if event.mimeData().hasText(): event.acceptProposedAction() else: super().dragMoveEvent(event) def dropEvent(self, event): if self.parent and hasattr(self.parent, "handle_drop"): items = [] if event.mimeData().hasUrls(): for url in event.mimeData().urls(): items.append(url.toLocalFile()) if event.mimeData().hasText(): items = event.mimeData().text().split('\n') self.parent.handle_drop(self, [i for i in items if i]) event.accept() else: super().dropEvent(event) def startDrag(self, supportedActions): selected = self.selectedIndexes() if not selected: return data = '\n'.join([self.model().data(i) for i in selected]) mime = QMimeData() mime.setText(data) drag = QDrag(self) drag.setMimeData(mime) drag.exec(Qt.DropAction.MoveAction)QListView(parent: Optional[QWidget] = None)
Ancestors
- PyQt6.QtWidgets.QListView
- PyQt6.QtWidgets.QAbstractItemView
- PyQt6.QtWidgets.QAbstractScrollArea
- PyQt6.QtWidgets.QFrame
- PyQt6.QtWidgets.QWidget
- PyQt6.QtCore.QObject
- PyQt6.sip.wrapper
- PyQt6.QtGui.QPaintDevice
- PyQt6.sip.simplewrapper
Methods
def dragEnterEvent(self, event)-
Expand source code
def dragEnterEvent(self, event): if event.mimeData().hasText(): event.acceptProposedAction() else: super().dragEnterEvent(event)dragEnterEvent(self, e: Optional[QDragEnterEvent])
def dragMoveEvent(self, event)-
Expand source code
def dragMoveEvent(self, event): if event.mimeData().hasText(): event.acceptProposedAction() else: super().dragMoveEvent(event)dragMoveEvent(self, e: Optional[QDragMoveEvent])
def dropEvent(self, event)-
Expand source code
def dropEvent(self, event): if self.parent and hasattr(self.parent, "handle_drop"): items = [] if event.mimeData().hasUrls(): for url in event.mimeData().urls(): items.append(url.toLocalFile()) if event.mimeData().hasText(): items = event.mimeData().text().split('\n') self.parent.handle_drop(self, [i for i in items if i]) event.accept() else: super().dropEvent(event)dropEvent(self, e: Optional[QDropEvent])
def edit(self, index, trigger, event)-
Expand source code
def edit(self, index, trigger, event): return Falseedit(self, index: QModelIndex) edit(self, index: QModelIndex, trigger: QAbstractItemView.EditTrigger, event: Optional[QEvent]) -> bool
def startDrag(self, supportedActions)-
Expand source code
def startDrag(self, supportedActions): selected = self.selectedIndexes() if not selected: return data = '\n'.join([self.model().data(i) for i in selected]) mime = QMimeData() mime.setText(data) drag = QDrag(self) drag.setMimeData(mime) drag.exec(Qt.DropAction.MoveAction)startDrag(self, supportedActions: Qt.DropAction)