virtual int qt_metacall(QMetaObject::Call, int, void **); \ QT_TR_FUNCTIONS /* translations helper */ \ private: \ Q_DECL_HIDDEN static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); Q_OBJECT 定义了一系列函数和一个静态的 QMetaObject 对象。这些函数由 MOC 在...
if (!strcmp(_clname, qt_meta_stringdata_XTest.stringdata0)) return static_cast<void*>(this); return QObject::qt_metacast(_clname); } int XTest::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return...
virtual const QMetaObject *metaObject() const; \ virtual void *qt_metacast(const char *); \ QT_TR_FUNCTIONS \ virtual int qt_metacall(QMetaObject::Call, int, void **); \ private: \ Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, vo...
//qobjectdefs.hstructQ_CORE_EXPORTQMetaObject{//...struct{// private dataconstQMetaObject *superdata;constQByteArrayData *stringdata;constuint *data;typedefvoid(*StaticMetacallFunction)(QObject *, QMetaObject::Call,int,void**); StaticMetacallFunction static_metacall;constQMetaObject *const*related...
0, qt_static_metacall }; QMetaObjectExtraData类型的内部成员static_metacall是一个指向Object::qt_static_metacall 的函数指针。 Object的内存布局如下: Object内存布局已经包含了静态成员staticMetaObject和 staticMetaObjectExtraData成员。 const QMetaObject *Object::metaObject() const ...
0, qt_static_metacall }; QMetaObjectExtraData类型的内部成员static_metacall是一个指向Object::qt_static_metacall 的函数指针。 Object的内存布局如下: Object内存布局已经包含了静态成员staticMetaObject和 staticMetaObjectExtraData成员。 const QMetaObject *Object::metaObject() const ...
virtual void *qt_metacast(const char *); \ virtual int qt_metacall(QMetaObject::Call, int, void **); \ QT_TR_FUNCTIONS \ private: \ Q_OBJECT_NO_ATTRIBUTES_WARNING \ Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \ Q...
从qt_static_metacall函数中可以知道信号槽根本不是通过函数指针的方式来匹配的,而是通过对象指针加索引...
这里,qt_static_metacall是由MOC生成的函数,它负责在运行时连接信号和槽,以及分发事件。 6.2 实际应用场景 在实际应用中,我们经常需要在多个QObject之间传递信息或者状态。这时,信号和槽机制就显得尤为重要。它允许我们在不了解对象内部实现的情况下,实现对象之间的通信。
这种就比较简单,直接调用callFunction即可,这个callFunction是什么呢,不知道是否还记得,之前链接的时候讲过,它就是moc文件里的qt_static_metacall,如果不记得了回去看看,这里在放出 image.png 到这里应该就很清晰了,这样就调用到了我们的槽函数test_Slot;