PyQt设计器升级的小部件-对顶级对象的引用?

PyQt设计器升级的小部件-对顶级对象的引用?,qt,pyqt,parent-child,pyqt5,qt-designer,Qt,Pyqt,Parent Child,Pyqt5,Qt Designer,在Qt designer中,我有一个自定义graphicsView小部件,我将其升级为一个名为View的自定义类: 请注意,它的父对象是水平布局。pyuic中相应的代码如下所示: class Ui_panelFill(object): def setupUi(self, panelFill): panelFill.setObjectName("panelFill") panelFill.resize(1031, 702) self.cen

在Qt designer中,我有一个自定义graphicsView小部件,我将其升级为一个名为View的自定义类:

请注意,它的父对象是水平布局。pyuic中相应的代码如下所示:

class Ui_panelFill(object):
    def setupUi(self, panelFill):
        panelFill.setObjectName("panelFill")
        panelFill.resize(1031, 702)
        self.centralwidget = QtWidgets.QWidget(panelFill)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 20, 1001, 631))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.graphicsView = View(self.horizontalLayoutWidget)
        self.graphicsView.setObjectName("graphicsView")
        ...
程序的核心,例如所有重要的变量和方法,都在名为panelFill的顶级类中

class panelFill(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        uic.loadUi("panelFill.ui",self)

        self.vertices=[[0,0],[0,120],[240,120],[240,0]]
        ...

如何从视图类的方法中引用顶点变量?我希望像self.parent.vertices这样的东西,但遗憾的是,父对象不是panelFill对象,而是horizontalLayout。是否有类似self.superduper()的顶点来访问顶级父对象而不是直接父对象的属性?

实际上,您的
视图的父对象是
水平放置widget
,这是一个
QWidget
-所有小部件都必须有另一个小部件作为父对象


要获取层次结构中的顶级小部件,可以使用图形视图小部件的方法。此方法只需沿着祖先链使用,直到找到一个没有父窗口的小部件-根据定义,它必须是顶级小部件(即您的主窗口)。

谢谢,我刚刚在另一个类似的问题中发现了这一点。因此,在视图init中,我执行self.top=self.window(),然后进行self.top.vertices之类的引用