def notify(self, obj: Qt.QObject, event: Qt.QEvent) -> bool: import sys isex = False try: self.enter_count += 1 ret, time = cast( Tuple[bool, float], measure_exec_time_ms(Qt.QApplication.notify, True, False)(self, obj, event)) if (type(event).__name__ == 'QEvent' and event.type() in qevent_info): event_name = qevent_info[event.type()][0] else: event_name = type(event).__name__ try: obj_name = obj.objectName() except RuntimeError: obj_name = '' if obj_name == '': try: if (obj.parent() is not None and obj.parent().objectName() != ''): obj_name = '(parent) ' + obj.parent().objectName() except RuntimeError: pass recursive_indent = 2 * (self.enter_count - 1) print( f'{time:7.3f} ms, receiver: {type(obj).__name__:>25}, event: {event.type():3d} {" " * recursive_indent + event_name:<30}, name: {obj_name}' ) self.enter_count -= 1 return ret except Exception: # pylint: disable=broad-except isex = True logging.error('Application: unexpected error') print(*sys.exc_info()) return False finally: if isex: self.quit()
object5 = QObject() object1.setParent(object0) # setParent设置对象的父类 object2.setParent(object0) object3.setParent(object1) object4.setParent(object1) object5.setParent(object2) print('objext0', object0) print('objext1', object1) print('objext2', object2) print('objext3', object3) print('objext4', object4) print('objext5', object5) print('objext1 parent ', object1.parent()) # object1.parent()返回object1的父类 print('objext5 parent ', object5.parent()) print(object0.findChild(object)) #返回一个子类 object2.setObjectName('b') print(object0.findChild(object, 'b')) #返回一个ObjectName为b的子类 object3.setObjectName('n') print(object0.findChild(object, 'n')) print(object0.findChild(object, 'n', Qt.FindDirectChildrenOnly)) #只查找直接继承的子类 print(object0.findChildren(object)) #返回所有子类 #当父类删除时,其子类也被删除,释放内存