这个链接:http ://doc.trolltech.com/4.5/moc.html#moc说
moc 工具读取 C++ 头文件。如果它找到一个或多个包含 Q_OBJECT 宏的类声明,它会生成一个 C++ 源文件,其中包含这些类的元对象代码。
什么是元对象代码?
编辑 1
如何知道我应该在哪些类中编写 Q_OBJECT?一个例子是信号和插槽,还有其他需要使用的情况吗?
您可以阅读文章Qt internals and Reversing以深入了解 Qt 及其 moc 编译器(元对象编译器)。总之,Qt 的 moc 编译器创建了一个元对象,用于向类添加额外的信息,如信号/插槽机制等。
元对象通过创建新对象或操作现有对象来增强编程语言。它们提供了一种语言本身实际上并不具备的功能。元对象由编译时或运行时解释。在 Qt 和 C++ 中,它由元对象编译器 (moc) 在编译期间完成。
一个例子是信号/槽概念的使用。
Qt 环境中的元对象代码是一个 C++ 源文件,它是您放置 Q_OBJECT(和/或其他相关宏)的 C++ 源文件的扩展版本。元对象代码将包含您的实现以及一些其他额外(元)代码,以便信号和插槽机制工作。
元对象包含有关对象的元信息,例如其名称以及对其信号和插槽的文本描述。这使得通过“名称”调用信号成为可能。请参阅有关QMetaObject的文档和本文。