def mouseMoveEvent(self, a0: QMouseEvent) -> None: if (a0.buttons() == Qt.LeftButton) and abs(a0.pos().y()) > 30: globalPos = self.mapToGlobal(a0.pos()) posInTab = self.mapFromGlobal(globalPos) TabBar.indexTabToDrag = self.currentIndex() tabRect = self.tabRect(self.indexTabToDrag) pixmap = QPixmap(tabRect.size()) self.render(pixmap, QPoint(), QRegion(tabRect)) mimeData = QMimeData() drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) cursor = QCursor(Qt.OpenHandCursor) drag.setHotSpot(cursor.pos()) drag.setHotSpot(a0.pos() - posInTab) drag.setDragCursor(cursor.pixmap(), Qt.MoveAction) dropAction = drag.exec(Qt.MoveAction) # If the drag completed outside of the tab bar, detach the tab and move # the content to the current cursor position if dropAction == Qt.IgnoreAction: a0.accept() self.detachTab(self.indexTabToDrag, self.cursor().pos()) else: super(TabBar, self).mouseMoveEvent(a0)
def mouseMoveEvent(self, event): """Reimplement how to handle the widget being dragged. Change the mouse icon when the user begins dragging the object.""" drag = QDrag(self) # When the user begins dragging the object, change the cursor's icon # and set the drop action drag.setDragCursor(QPixmap("images/drag.png"), Qt.MoveAction) mime_data = QMimeData() drag.setMimeData(mime_data) # Create the QPainter object that will draw the widget being dragged pixmap = QPixmap(self.size()) # Get the size of the object painter = QPainter(pixmap) # Set the painter’s pixmap # Draw the pixmap; grab() renders the widget into a pixmap specified by rect() painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) # Set the pixmap to represent the drag action drag.setHotSpot(event.pos()) drag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, e): if e.buttons() != Qt.RightButton: return globalPos = self.mapToGlobal(e.pos()) tabBar = self.tabBar() posInTab = tabBar.mapFromGlobal(globalPos) self.indexTab = tabBar.tabAt(e.pos()) tabRect = tabBar.tabRect(self.indexTab) pixmap = QPixmap(tabRect.size()) tabBar.render(pixmap, QPoint(), QRegion(tabRect)) mimeData = QMimeData() drag = QDrag(tabBar) drag.setMimeData(mimeData) drag.setPixmap(pixmap) cursor = QCursor(Qt.OpenHandCursor) drag.setHotSpot(e.pos() - posInTab) drag.setDragCursor(cursor.pixmap(), Qt.MoveAction) drag.exec_(Qt.MoveAction)