2016-12-24 63 views
1

在Qt設計師,我有我提升到一個自定義類名爲查看自定義窗口小部件graphicsView:PyQt設計師提升的小部件 - 對頂級對象的引用?

enter image description here

注意,其父是horizo​​ntalLayout。從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]] 
     ... 

如何從View類的方法引用頂點變量?我希望像self.parent.vertices這樣的東西,但可惜父母不是panelFill對象,它是horizo​​ntalLayout。是否有像self.superduper()。頂點到頂層父對象的屬性而不是直接父對象?

回答

1

實際上,您的View的父級爲horizontalLayoutWidget,這是QWidget - 所有小部件都必須具有其他小部件作爲父級。

要獲取層次結構中的頂層小部件,可以使用圖形視圖小部件的window()方法。這種方法只是使用parentWidget()直接走向祖先鏈,直到找到一個沒有父項的小部件 - 根據定義,它必須是頂層小部件(即主窗口)。

+0

謝謝,我剛剛發現在另一個類似的問題。所以在視圖__init__我做self.top = self.window()然後使引用像self.top.vertices –