def dropEvent(self, event): if event.mimeData().hasText(): mime = event.mimeData() pieces = mime.text().split() position = event.pos() hotSpot = QPoint() hotSpotPos = mime.data('application/x-hotspot').split(' ') if len(hotSpotPos) == 2: hotSpot.setX(hotSpotPos[0].toInt()[0]) hotSpot.setY(hotSpotPos[1].toInt()[0]) for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position - hotSpot) newLabel.show() position += QPoint(newLabel.width(), 0) if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore()
def _update_fixed_widgets(self): r = self.viewport().rect() for w, a in self.fixed_widgets.items(): p = QPoint() if a & Qt.AlignHCenter: p.setX((r.width() - w.width()) / 2) elif a & Qt.AlignRight: p.setX(r.width() - w.width()) if a & Qt.AlignVCenter: p.setY((r.height() - w.height()) / 2) elif a & Qt.AlignBottom: p.setY(r.height() - w.height()) w.move(p)