PySide drag start from QPushButton
Qt (PySide) は一部のWidget以外でドラッグ開始を実装しようとすると意外と面倒 ググると大体受け入れる側のサンプル出てきちゃうし
class MyButton(QPushButton): def __init__(self, parent): super().__init__(parent) self._startPos = QPoint() def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self._startPos = event.pos() super().mousePressEvent(event) def mouseMoveEvent(self, event): if 0 != (event.buttons() & Qt.LeftButton): if (event.pos() - self._startPos).manhattanLength() >= QApplication.startDragDistance(): self.startDrag() self.setDown(False) return super().mouseMoveEvent(event) def startDrag(self): drag = QDrag(self) mime = QMimeData(self) mime.setText('hogehoge') drag.setMimeData(mime) drag.start(Qt.CopyAction)
QToolButtonなどでも同様 mousePressEvent, mouseMoveEventあたりが継承できるWidgetはこれでいけそう