В моей тестовой демонстрации mouseReleaseEvent
не будет выполняться, если mouseMoveEvent
что-то сделает с QDrag
. Я хочу, чтобы mouseReleaseEvent
также работал, когда я что-то перетаскиваю.
class Item2(QGraphicsItem):
def boundingRect(self):
return QRectF(-50, -50, 100, 100)
def paint(self, p, o, w):
p.setBrush(Qt.red)
p.drawRect(-50, -50, 100, 100)
def mousePressEvent(self, e):
if e.button() == Qt.LeftButton:
self.setCursor(Qt.ClosedHandCursor)
print('press')
def mouseMoveEvent(self, e):
if QLineF(e.buttonDownScreenPos(Qt.LeftButton), e.screenPos()).length() > QApplication.startDragDistance():
drag = QDrag(e.widget())
data = QMimeData()
data.setText('Test')
drag.setMimeData(data)
drag.exec()
print('move')
def mouseReleaseEvent(self, e):
self.setCursor(Qt.ArrowCursor)
print('release')
class Demo2(QGraphicsView):
def __init__(self):
super().__init__()
self.scene = QGraphicsScene()
self.scene.addItem(Item2())
self.setScene(self.scene)
app = QApplication([])
demo = Demo2()
demo.resize(800, 800)
demo.show()
app.exec()