对动态元对象的其他支持¶
PyQt5为任何QObject
的Python子类创建一个QMetaObject
实例,而不需要Qt的 Q_OBJECT
宏的等价物。大多数QMetaObject
通过定义信号,插槽和属性自动填充,如前几节所述。在本节中,我们将介绍如何填充QMetaObject
的其余部分。
Q_ENUMS()
and Q_FLAGS()
¶
New in version 5.2.
Q_ENUMS()
和Q_FLAGS()
函数分别声明发布在QMetaObject
中的枚举类型和标志类型。PyQt5中的典型用途是声明QML可以使用的符号常量,以及可以在Qt Designer中设置的属性类型。
每个函数都需要许多实现枚举类型或标志类型的Python类型对象。For example:
from PyQt5.QtCore import Q_ENUMS, Q_FLAGS, QObject
class Instruction(QObject):
class Direction:
Up, Down, Left, Right = range(4)
Q_ENUMS(Direction)
class Status:
Null = 0x00
Urgent = 0x01
Acknowledged = 0x02
Completed = 0x04
Q_FLAGS(Status)
Q_CLASSINFO()
¶
Q_CLASSINFO()
函数的用法与Qt的同名宏相同,也就是说,它是从类的定义中调用的,以便指定一个名称/值对,放置在类的 QMetaObject
。
例如,QML使用它来定义类的默认属性:
from PyQt5.QtCore import Q_CLASSINFO, QObject
class BirthdayParty(QObject):
Q_CLASSINFO('DefaultProperty', 'guests')