在Qt中QObject是所有类的基类,换而言之是在Qt中所有的类均继承自QObject,这使得QObject中的所有方法在其他类中使用。所以学习QObject中的方法有其特殊的意义。
继承结构测试的方法
# 创建一个QObject对象
obj = QObject()
# 获得父类
mros = QObject.mro()
for mro in mros:
print(mro)
# <class 'PyQt5.QtCore.QObject'>
# <class 'sip.wrapper'>
# <class 'sip.simplewrapper'>
# <class 'object'>
对象名称、属性相关操作
# 创建一个QObject对象
obj = QObject()
# 设置对象名称
obj.setObjectName('new_object_name')
# 获取对象的名称
obj.objectName()
# 添加对象动态属性与值
obj.setProperty("property_name",value)
# 获得对象某一属性对应的值
obj.property("property_name") # 将返回value
# 获取一个对象中通过setProperty()设置的所有属性名称
obj.dynamicPropertyNames()
应用场景用于qss的ID选择器和属性选择器,同时可以应用于装饰墙的信号与槽;
父子对象操作
# 创建QObject对象
obj1 = QObject()
obj2 = QObject()
# 设置父对象,将obj1设置为obj2的父对象
print(obj1) # return:<PyQt5.QtCore.QObject object at 0x000001CE6482EA68>
obj2.setParent(obj1)
# 获取父对象
obj2.parent() # return:<PyQt5.QtCore.QObject object at 0x000001CE6482EA68>
# 获取所有直接子对象
print(obj2) # return:<PyQt5.QtCore.QObject object at 0x0000024CA4F9EAF8>
obj1.children() # return:[<PyQt5.QtCore.QObject object at 0x0000024CA4F9EAF8>]
# 获取某一个指定名称和类型的子对象
obj.findChild(参数1, 参数2, 参数3)