Qt设计者创建的QWidget未被识别为QWidget

时间:2017-07-22 19:17:25

标签: python qt pyqt pyqt4 qt-designer

我正在使用Qt设计器4.8.7,从它开始。我创建了一个MainWindow,其中我想加载一个布局。

我有一个小部件,使用来自Qt设计师的pyuic4生成。

我正在加载我的小部件

self.setCentralWidget(myWidget)

它抛出了这个错误:

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

它清楚地解释了传递的对象未被识别为QWidget。修改类定义可以解决这个问题:

class Ui_myWidget(object):

class Ui_myWidget(QtGui.QWidget):

由于小工具会更新,每次再次生成.py时,我都必须手动编辑。我想避免这种情况。我错过了一步吗?

1 个答案:

答案 0 :(得分:1)

Qt Designer的目标是实现视图,因此它不实现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)