1

这个链接:http ://doc.trolltech.com/4.5/moc.html#moc说

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

什么是对象代码?

编辑 1

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

4

4 回答 4

4

您可以阅读文章Qt internals and Reversing以深入了解 Qt 及其 moc 编译器(元对象编译器)。总之,Qt 的 moc 编译器创建了一个元对象,用于向类添加额外的信息,如信号/插槽机制等。

于 2011-05-03T07:31:44.437 回答
2

元对象通过创建新对象或操作现有对象来增强编程语言。它们提供了一种语言本身实际上并不具备的功能。元对象由编译时或运行时解释。在 Qt 和 C++ 中,它由元对象编译器 (moc) 在编译期间完成。

一个例子是信号/槽概念的使用。

于 2011-05-03T07:34:38.837 回答
1

Qt 环境中的元对象代码是一个 C++ 源文件,它是您放置 Q_OBJECT(和/或其他相关宏)的 C++ 源文件的扩展版本。元对象代码将包含您的实现以及一些其他额外(元)代码,以便信号和插槽机制工作。

于 2011-05-03T07:33:47.247 回答
1

元对象包含有关对象的元信息,例如其名称以及对其信号和插槽的文本描述。这使得通过“名称”调用信号成为可能。请参阅有关QMetaObject的文档和本文

于 2011-05-03T07:37:44.953 回答