Q_OBJECT 宏有什么作用?为什么所有 Qt 对象都需要这个宏?

What does the Q_OBJECT macro do? Why do all Qt objects need this macro?(Q_OBJECT 宏有什么作用?为什么所有 Qt 对象都需要这个宏?)
本文介绍了Q_OBJECT 宏有什么作用?为什么所有 Qt 对象都需要这个宏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我刚开始使用 Qt 并注意到所有示例类定义都将宏 Q_OBJECT 作为第一行.这个预处理器宏的目的是什么?

I just started using Qt and noticed that all the example class definitions have the macro Q_OBJECT as the first line. What is the purpose of this preprocessor macro?

推荐答案

来自 Qt 文档:

元对象编译器,moc,是处理 Qt 的 C++ 的程序扩展.

The Meta-Object Compiler, moc, is the program that handles Qt's C++ extensions.

moc 工具读取 C++ 头文件.如果找到一个或多个类包含 Q_OBJECT 的声明宏,它生成一个 C++ 源文件包含元对象代码那些课.除其他事项外,需要元对象代码信号槽机制运行时类型信息,以及动态属性系统.

The moc tool reads a C++ header file. If it finds one or more class declarations that contain the Q_OBJECT macro, it produces a C++ source file containing the meta-object code for those classes. Among other things, meta-object code is required for the signals and slots mechanism, the run-time type information, and the dynamic property system.

这篇关于Q_OBJECT 宏有什么作用?为什么所有 Qt 对象都需要这个宏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Is it possible to connect a signal to a static slot without a receiver instance?(是否可以在没有接收器实例的情况下将信号连接到静态插槽?)
how to restart my own qt application?(如何重新启动我自己的 qt 应用程序?)
Where in Qt Creator do I pass arguments to a compiler?(在 Qt Creator 中,我在哪里将参数传递给编译器?)
Using a Qt-based DLL in a non-Qt application(在非 Qt 应用程序中使用基于 Qt 的 DLL)
Configuring the GCC compiler switches in Qt, QtCreator, and QMake(在 Qt、QtCreator 和 QMake 中配置 GCC 编译器开关)
Difference between creating object with () or without(使用 () 或不使用 () 创建对象的区别)