如果继承自QObeject,并且需要用到信号槽的类写在.h头文件中,那么在类中写signals: void sendSignal();后,不需要在该头文件中添加 #include "moc_文件名.h" ,不是不需要,是因为在头文件中编译器会自动添加该头文件,其作用是对Qt信号槽的signals:中定义的函数进行实现,我们只进行了定义,而为实现,如果不实现是无法编译通过的。
但是如果继承QObject,并且需要用到signals:的类被定义在了.cpp文件中,signals:中定义了发送信号的函数时,必须在该类定义结束后,在该类的后面加上 #include "文件名.moc" ,注意这里和.h中自动添加的包含文件名字不同,并且在该类的开始出添加Q_OBJECT 宏, 这样是告诉编译器这个类中用到了Qt的信号槽机制,并且需要对signals:中定义的信号函数进行实现。