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)
我正在使用 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)