今天在做QT开发时候,遇到标题所述问题。
解决方法:
https://blog.csdn.net/gsyfy/article/details/115035763
亲测有效。
当然stackoverflow也有同样的答案,都可以。主要就是重写这个加载工具。
https://stackoverflow.com/questions/27603350/how-do-i-load-children-from-ui-file-in-pyside/27610822#27610822
重写后的UiLoader如下:
from PySide import QtGui, QtCore, QtUiTools
class UiLoader(QtUiTools.QUiLoader):
_baseinstance = None
def createWidget(self, classname, parent=None, name=''):
if parent is None and self._baseinstance is not None:
widget = self._baseinstance
else:
widget = super(UiLoader, self).createWidget(classname, parent, name)
if self._baseinstance is not None:
setattr(self._baseinstance, name, widget)
return widget
def loadUi(self, uifile, baseinstance=None):
self._baseinstance = baseinstance
widget = self.load(uifile)
QtCore.QMetaObject.connectSlotsByName(widget)
return widget
替换原来的即可,注意名字的变化。
没空要授权了,投自制了。
谢谢朋友们!