def mouseMoveEvent(self, event): if QLineF(event.screenPos(), event.buttonDownScreenPos(Qt.LeftButton)).length() < QApplication.startDragDistance(): return drag = QDrag(event.widget()) mime = QMimeData() drag.setMimeData(mime) mime.setText("ExpressionBasedForce") pixmap = QPixmap(int(self.boundingRect().width()), int(self.boundingRect().height())) pixmap.fill(Qt.white) painter = QPainter(pixmap) painter.setRenderHint(QPainter.Antialiasing) self.paint(painter, QStyleOptionGraphicsItem(), event.widget()) painter.end() pixmap.setMask(pixmap.createHeuristicMask()) drag.setPixmap(pixmap) drag.setHotSpot(QPoint(int(self.boundingRect().width()/2.0), int(self.boundingRect().height()/2.0))) drag.exec_() self.setCursor(Qt.OpenHandCursor)
def mouseMoveEvent(self, event): if QLineF(event.screenPos(), event.buttonDownScreenPos(Qt.LeftButton)).length() < QApplication.startDragDistance(): return print "AtomItem::mouseMoveEvent" drag = QDrag(event.widget()) mime = QMimeData() # A weak solution that could not be implemented in # C++ mime.atom = self.atom mime.atom_item = self drag.setMimeData(mime) mime.setText("Atom") pixmap = QPixmap(int(self.boundingRect().width()), int(self.boundingRect().height())) pixmap.fill(Qt.white) painter = QPainter(pixmap) painter.setRenderHint(QPainter.Antialiasing) self.paint(painter, QStyleOptionGraphicsItem(), event.widget()) painter.end() pixmap.setMask(pixmap.createHeuristicMask()) drag.setPixmap(pixmap) drag.setHotSpot(QPoint(int(self.boundingRect().width()/2.0), int(self.boundingRect().height()/2.0))) drag.exec_() self.setCursor(Qt.OpenHandCursor)