def delete_object(self): # self 是window实例
# obj1 = QObject() # 注意当方法执行完毕后,局部变量obj1没被引用,会被自动释放。
# obj2 = QObject()
# obj3 = QObject()
obj1 = QObject()
self.obj1 = obj1 # 只有当该实例对象被销毁,obj1才会被自动释放。
obj2 = QObject()
obj3 = QObject()
obj3.setParent(obj2) # 当obj1 被释放,obj2 和obj3 也被释放。
obj2.setParent(obj1)
obj1.destroyed.connect(lambda : print("obj1被释放了"))
obj2.destroyed.connect(lambda : print("obj2被释放了"))
obj3.destroyed.connect(lambda : print("obj3被释放了"))
# del obj2 # 注意:obj2并不会被释放,因为还有obj1引用着它。
obj2.deleteLater()
print(obj1.children()) # 输出:obj2 的地址
# deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收
# 到这个event之后才会销毁对象
7.QObject 对象删除
最新推荐文章于 2024-05-16 00:17:09 发布