对于每一个 QObject 类的派生类,qt 都会使用 moc 命令之生成附加的 moc_xxx.cpp 文件。在 moc_xxx.cpp 文件中,包含了 QObject 派生类的附加信息。
在 sender.h 头文件中定义一个 Sender 的类:
![e6cd2db0b2941e0c8592fb2c6eac7b33.png](https://i-blog.csdnimg.cn/blog_migrate/23b6a07adc5dff2cda4d1f4d996427d0.jpeg)
它分别有三个信号与四个槽函数。
在生成的 moc_sender.cpp 中:
qt_meta_stringdata_Sender 是一个字面量表,也是可称之为符号表。
![60f5894ba207e1433275718d59e3de7a.png](https://i-blog.csdnimg.cn/blog_migrate/aeb27e8e2b8cc32504af049c424d8bf1.jpeg)
它的存在是为了能够以 idx 就能获取对应的字符串。比如 idx = 4,对应的字串在则为 (const char *)(qt_meta_stringdata_Sender.stringdata0+29)
另一个则是 qt_meta_data_Sender ,其生成的内容如下:
![994f9b8707287d7cac454c4b87e21c81.png](https://i-blog.csdnimg.cn/blog_migrate/a0ba5fbf788b02e64074ef408378860f.jpeg)
从上可以看出,通过上面的这个数据,足于描述 Sender 类中有几个信号与槽函数,并描述了它们的参数与返回值类型。
这也是 Qt 反射机制的基础。