pyqt5-004

QObject的类型判定:

  API:

    isWidgetType() :判断是否为控件

    inherits(父类):判断是否继承自某个父类(可以使直接继承或间接继承自某个类)

  应用场景:

    过滤筛选控件

 

obj = QObject()
w = QWidget()
btn = QPushButton()
label = QLabel()
objs = [obj, w, btn, label]
ob = [o.isWidgetType()  for o in objs ]
# 判断是否为控件类型
print(ob)


op = [o.inherits('QWidget') for o in objs]
# 判断是否继承自父类
print(op)

 

 

对象删除:

  API:

    obj.deleteLabter():

      1.删除一个对象时,也会接触它与父对象之间的关系

      2.deleteLater()并没有将对象立即销毁,而是想主消息循环发送一个event,下一次主消息循环收到这个event之后才会销毁对象

      3.这样做的好处是可以在这些延迟删除的时间内完成一些操作,UI出就是内存释放会不及时

  应用场景:

    想要移除某一个对象的时候使用

 

# 对象删除
obj1 = QObject()
self.obj1 = obj1
obj2 = QObject()
obj3 = QObject()

obj3.setParent(obj2)
obj2.setParent(obj1)

obj1.destroyed.connect(lambda: print('obj1 releases'))
obj2.destroyed.connect(lambda: print('obj2 releases'))
obj3.destroyed.connect(lambda: print('obj3 releases'))

# del obj2
obj2.deleteLater()
print(obj1.children())
# 之后才会删除obj2对象

 

    

    

 

  

 

posted @ 2020-05-09 17:35  King~~~  阅读(132)  评论(0编辑  收藏  举报