Other Support for Dynamic Meta-objects¶
PyQt5 creates a QMetaObject
instance for any Python
sub-class of QObject
without the need for the equivalent
of Qt’s Q_OBJECT
macro. Most of a QMetaObject
is
populated automatically by defining signals, slots and properties as described
in previous sections. In this section we cover the ways in which the remaining
parts of a QMetaObject
are populated.
Q_ENUMS()
and Q_FLAGS()
¶
New in version 5.2.
The Q_ENUMS()
and Q_FLAGS()
functions
declare enumerated types and flag types respectively that are published in the
QMetaObject
. The typical use in PyQt5 is to declare
symbolic constants that can be used by QML.
Each function takes a number of Python type objects that implement the enumerated or flag type. 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()
¶
The Q_CLASSINFO()
function is used in the same way as Qt’s
macro of the same name, i.e. it is called from a class’s definition in order to
specify a name/value pair that is placed in the class’s
QMetaObject
.
For example it is used by QML to define the default property of a class:
from PyQt5.QtCore import Q_CLASSINFO, QObject
class BirthdayParty(QObject):
Q_CLASSINFO('DefaultProperty', 'guests')