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