Q_OBJECT宏和元对象代码

时间:2011-05-03 07:24:33

标签: qt qobject

此链接:http://doc.trolltech.com/4.5/moc.html#moc

  

moc工具读取C ++头文件。   如果找到一个或多个类   包含Q_OBJECT的声明   宏,它生成一个C ++源文件   包含元对象代码   那些课程。

什么是 目标代码?

编辑1

如何知道我应该在哪个类中编写Q_OBJECT?一个例子是信号和插槽,还有其他需要使用的情况?

4 个答案:

答案 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的文档。