def mouseMoveEvent(self, event): if not event.buttons() & Qt.LeftButton: return if (event.pos() - self.drag_pos).manhattanLength() < 100: return event.accept() drag = QDrag(self) mimedata = QMimeData() mimedata.setData("action", "window_drag") drag.setMimeData(mimedata) widget = self.current_widget pixmap = QPixmap.grabWidget(widget).scaledToWidth(300, Qt.SmoothTransformation) dragpixmap = DragPixmap(pixmap, 0.50, self) dragpixmap.move(QCursor().pos()) dragpixmap.show() drag.exec_() dragpixmap.deleteLater() self.widgetDnD.emit(self.current_widget, drag.target()) return