PyQt设计器升级的小部件-对顶级对象的引用?
在Qt designer中,我有一个自定义graphicsView小部件,我将其升级为一个名为View的自定义类: 请注意,它的父对象是水平布局。pyuic中相应的代码如下所示: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
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之类的引用