QMetaObjectPrivate是QMetaObjectd指针里面的data成员
struct QMetaObjectPrivate { // revision 7 is Qt 5.0 everything lower is not supported // revision 8 is Qt 5.12: It adds the enum name to QMetaEnum enum { OutputRevision = 8 }; // Used by moc, qmetaobjectbuilder and qdbus int revision; int className; int classInfoCount, classInfoData; int methodCount, methodData; int propertyCount, propertyData; int enumeratorCount, enumeratorData; int constructorCount, constructorData; int flags; int signalCount; static inline const QMetaObjectPrivate *get(const QMetaObject *metaobject) { return reinterpret_cast<const QMetaObjectPrivate*>(metaobject->d.data); } static int originalClone(const QMetaObject *obj, int local_method_index); static QByteArray decodeMethodSignature(const char *signature, QArgumentTypeArray &types); static int indexOfSignalRelative(const QMetaObject **baseObject, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfSlotRelative(const QMetaObject **m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfSignal(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfSlot(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfMethod(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfConstructor(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); Q_CORE_EXPORT static QMetaMethod signal(const QMetaObject *m, int signal_index); Q_CORE_EXPORT static int signalOffset(const QMetaObject *m); Q_CORE_EXPORT static int absoluteSignalCount(const QMetaObject *m); Q_CORE_EXPORT static int signalIndex(const QMetaMethod &m); static bool checkConnectArgs(int signalArgc, const QArgumentType *signalTypes, int methodArgc, const QArgumentType *methodTypes); static bool checkConnectArgs(const QMetaMethodPrivate *signal, const QMetaMethodPrivate *method); static QList<QByteArray> parameterTypeNamesFromSignature(const char *signature); #ifndef QT_NO_QOBJECT static QObjectPrivate::Connection *connect(const QObject *sender, int signal_index, const QMetaObject *smeta, const QObject *receiver, int method_index_relative, const QMetaObject *rmeta = 0, int type = 0, int *types = 0); static bool disconnect(const QObject *sender, int signal_index, const QMetaObject *smeta, const QObject *receiver, int method_index, void **slot, DisconnectType = DisconnectAll); #endif };