我们在Qt源码中可以看到一个QObject的子类经常会用到一些Q_
开头的宏,例如QMainWindow类开始部分代码是这样的:
Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle)
......
public:
enum DockOption {
AnimatedDocks = 0x01,
AllowNestedDocks = 0x02,
AllowTabbedDocks = 0x04,
ForceTabbedDocks = 0x08, // implies AllowTabbedDocks, !AllowNestedDocks
VerticalTabs = 0x10, // implies AllowTabbedDocks
GroupedDragging = 0x20 // implies AllowTabbedDocks
};
Q_ENUM(DockOption)
Q_DECLARE_FLAGS(DockOptions, DockOption)
Q_FLAG(DockOptions)
这几个宏也不是标准C++的内容,它们属于Qt的属性系统,是元对象系统的一部分。使用属性系统的类必