mouseReleaseEvent не запускается при перетаскивании данных? - PullRequest
0 голосов
/ 03 августа 2020

В моей тестовой демонстрации 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...