0

从垃圾收集/正确清理的角度来看,这是我所拥有的:

class MyWidget(QWidget):
    def __init__(self,qtParent):
        QWidget.__init__(self,qtParent):
        
        self.mySubWidget = MySubWidget(self)  # <-- keeping a direct reference to the child

当我销毁 MyWidget 时,当我调用下面的代码时,mySubWidget 是否也会被 Qt/pyside/python 正确销毁?

setAttribute( Qt.DeleteOnClose, True)
myWidget.close()

或者,我应该使用如下所示的弱引用吗?

import weakref

class MyWidget(QWidget):
    def __init__(self,qtParent):
        QWidget.__init__(self,qtParent):
        
        self.mySubWidget = weakref.ref(MySubWidget(self))
4

1 回答 1

2

第一个很好。如果您没有对MySubWidget实例外部创建的任何其他引用,那么当您删除实例时,它将被垃圾收集MyWidget

于 2012-04-13T22:05:21.420 回答