obj.deleteLater()
删除一个对象时
也会解除它与父对象之间的关系
deleteLater()并没有将对象立即销毁
而是向主消息循环发送了一个event
下一次主消息循环收到这个event之后才会销毁对象
这样做的好处是可以在这些延迟删除的时间内完成一些操作
坏处就是内存释放不及时
def setup_ui(self):
obj1 = QObject()
obj2 = QObject()
obj3 = QObject()
obj3.setParent(obj2)
obj2.setParent(obj1)
obj1.destroyed.connect(lambda: print('obj1 destroyed'))
obj2.destroyed.connect(lambda: print('obj2 destroyed'))
obj3.destroyed.connect(lambda: print('obj3 destroyed'))
obj1没有人管理
它在这个方法里面
是一个局部变量
执行完毕后
这个局部变量没有引用
就被释放了
释放的话它被连接的销毁信号被触发
父对象被干掉后
obj2对父对象obj1的引用就不在了
obj3同理
obj1 destroyed
obj2 destroyed
obj3 destroyed
enjoy
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)