What does the Q_OBJECT macro do? Why do all Qt objects need this macro?(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 对象都需要这个宏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Q_OBJECT 宏有什么作用?为什么所有 Qt 对象都需要这
基础教程推荐
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17