QPainter通过鼠标事件实现图片平移纯代码
时间: 2024-05-02 21:23:17 浏览: 116
首先,需要在继承QWidget的类中重写mousePressEvent、mouseMoveEvent和mouseReleaseEvent三个函数,实现鼠标事件的响应。下面是一个简单的例子,其中self.image是要平移的图片:
```python
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.image = QImage('test.jpg')
self.offset = QPoint(0, 0) # 用于记录偏移量的值
self.setFixedSize(self.image.size())
def paintEvent(self, event):
painter = QPainter(self)
painter.drawImage(self.offset, self.image)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.last_pos = event.pos()
def mouseMoveEvent(self, event):
if event.buttons() == Qt.LeftButton:
offset = event.pos() - self.last_pos
self.last_pos = event.pos()
self.offset += offset
self.update()
def mouseReleaseEvent(self, event):
pass
```
在mousePressEvent中记录下鼠标的位置,在mouseMoveEvent中计算出偏移量,并对self.offset进行更新,在paintEvent中使用QPainter.drawImage函数将图片绘制到窗口中。最后,在mouseReleaseEvent中可以进行一些清理工作,但本例中并没有用到。
阅读全文