如果在类内使用Q_OBJECT宏又没有使用信号槽,可以使用Q_GADGET宏,更轻量。
「Q_GADGET宏是Q_OBJECT宏的简化版本,用于不从QObject继承但仍要使用QMetaObject提供的某些反射功能的类。」
Q_GADGET的使用就像Q_OBJECT宏一样,它必须出现在类定义的私有部分中。使用Q_GADGET可以具有Q_ENUM,Q_PROPERTY和Q_INVOKABLE,但是不能有信号或槽。
Q_GADGET使类成员staticMetaObject可用。staticMetaObject是QMetaObject类型,它提供Q_ENUMS用于枚举声明的访问。
Q_ENUM与Q_ENUMS,它们都是「将一种或几种枚举类型注册到元对象系统中」。但后者是旧版本,不建议使用。
领取专属 10元无门槛券
私享最新 技术干货