猿问

带有鼠标事件平移的 QPaint

我创建了一个绘画小部件,我想用手形图标工具实现一个平移事件,通常在许多软件中都会看到。当用户按下鼠标按钮并按住它然后在 内移动时Qpainter canvas,绘图跟随鼠标移动。我不知道如何在 PyQt5 中做到这一点。

视觉示例

当前画面:

所需的屏幕事件:

http://img4.mukewang.com/6124bd910001041211940624.jpg

代码:


import sys

from PyQt5 import QtCore, QtGui, QtWidgets


class Foo(QtWidgets.QWidget):

    def __init__(self, parent=None):

        super(Foo, self).__init__(parent)

        self.setGeometry(QtCore.QRect(200, 100, 1200, 600))        

        self.paint = Paint()

        self.sizeHint()

        self.lay = QtWidgets.QVBoxLayout()

        self.lay.addWidget(self.paint)

        self.setLayout(self.lay)


class Paint(QtWidgets.QWidget):

    def __init__(self, parent=None):

        super(Paint, self).__init__(parent)

        self.setBackgroundRole(QtGui.QPalette.Base)     

        self.setAutoFillBackground(True)


        self._width = 350

        self._height = 250


    def paintEvent(self, event):

        painter = QtGui.QPainter(self)

        painter.setRenderHint(QtGui.QPainter.Antialiasing)

        painter.setBrush(QtGui.QBrush( QtCore.Qt.cyan))

        painter.setPen(QtCore.Qt.darkCyan)


        r = QtCore.QRect(QtCore.QPoint(), QtCore.QSize(self._width, self._height))

        r.moveCenter(self.rect().center())

        painter.drawRect(r)



if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)

    w = Foo()

    w.show()

    sys.exit(app.exec_())

我感谢任何帮助并提前致谢。



凤凰求蛊
浏览 277回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答