微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当代理小部件添加到我的 QGraphicsScene 时,mouseMoveEvent 会无限反应

如何解决当代理小部件添加到我的 QGraphicsScene 时,mouseMoveEvent 会无限反应

在这个简化的代码中,我尝试在 QGraphicScene 中添加一个白色小部件作为背景,QGraphicScene 是 QStackedWidget 中的一个页面(它代表一本书)。如果我删除“self.proxyPage = self.newPage.mainScene.addWidget(self.bgWidget)”mouseMoveEvent 正常工作,这个反应无限。我试图以相反的方式将 QStackedWidget 放入 QGraphicsScene 中,但问题仍然存在。

有人知道是什么原因造成的吗?

提前致谢

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys

class Book(QStackedWidget):
    def setupUi(self,Dialog):
        self.listPages = []
        self.newPage = Projects()
        self.addWidget(self.newPage)
        self.listPages.append(self.newPage)
        self.backgroundP = QWidget()
        self.proxyPage = self.newPage.mainScene.addWidget(self.bgWidget)
        self.backgroundP.setStyleSheet("background-color:rgb(255,255,255);")
        self.backgroundP.setFixedSize(QSize(200,200))

class Projects(QGraphicsView):
    def __init__(self):
        super().__init__()
        
        self.mainScene = QGraphicsScene()
        self.setScene(self.mainScene)

    def mousepressEvent(self,event):
        if event.buttons() & Qt.LeftButton:
            print("click")

    def mouseMoveEvent(self,event):
        print("move")

    def mouseReleaseEvent(self,event):
        print("release")


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.mainWidget = QWidget()
        self.mainLayout = qgridLayout()
        self.mainWidget.setLayout(self.mainLayout)
        self.setCentralWidget(self.mainWidget)
        self.myBook = Book()
        self.myBook.setupUi(self)
        self.myView = Projects()
        self.mainLayout.addWidget(self.myBook)

app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。