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

QWidget created by Qt designer not recognized as QWidget

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

我有一个小部件,由 Qt 设计器 pyuic4 生成。

我正在加载我的小部件

self.setCentralWidget(myWidget)

它抛出这个错误:

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

它清楚地说明传递的对象不被识别为QWidget。问题可以通过修改 class 的定义来解决:

class Ui_myWidget(object):

class Ui_myWidget(QtGui.QWidget):

由于widgets会更新,每次.py都会重新生成,我得手动编辑。我想避免这种情况。我错过了一步吗?

Qt Designer 的目标是实现视图,所以它没有实现 QWidget,我们有义务通过一个小部件来使用该实现,我建议这样做:

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

然后您创建这个 class 的对象并在您的其他小部件中使用它:

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