2017-07-22 85 views
1

我正在使用Qt設計器4.8.7開始。我創建了一個MainWindow,我想載入一個佈局。由Qt設計師創建的QWidget未被識別爲QWidget

我有一個小工具,由Qt designer的pyuic4生成。

我打開我的窗口小部件做

self.setCentralWidget(myWidget) 

它拋出這個錯誤:

AttributeError: 'Ui_myWidget' object has no attribute 'setObjectName' 

它清楚地解釋傳遞的對象不被識別爲一個QWidget。這個問題是可以解決的,從修改類定義:

class Ui_myWidget(object): 

class Ui_myWidget(QtGui.QWidget): 

由於部件將被更新,每次.py將再次生成,我將不得不手動編輯。我想避免這種情況。我錯過了一步嗎?

+1

如果可能,您不應該編輯由'pyuic4'生成的.py文件。相反,您可以在它們旁邊創建一個新的.py文件,並導入這些文件以調用小部件:'from pyfilename import Ui_myWidget' – Saelyth

+0

這是用於測試目的。 @eyllanesc提供的答案也解釋了它。謝謝! –

回答

1

Qt設計的目的是爲了實現視圖,所以它沒有實現一個QWidget,我們通過一個小工具使用該實施的職責,我建議做以下幾點:

class MyWidget(QtGui.QWidget, Ui_myWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent=None) 
     self.setupUi(self) 

然後你創建此類的對象並將其用於其他小部件:

myWidget = MyWidget(self) 
self.setCentralWidget(myWidget) 
+0

感謝您的回答和背後的解釋。這工作像一個魅力 –

+0

我需要等待至少3分鐘。等一下 –

+1

對不起,我不知道這個規則。 – eyllanesc