示例#1
0
    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()
示例#2
0
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))  #返回所有子类

#当父类删除时,其子类也被删除,释放内存