Qt反射机制与信号槽机制

反射机制

介绍:
Qt反射机制是基于moc(meta object compiler)实现的
moc 全称是 Meta-Object Compiler,也就是“元对象编译器”。Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,我们还可以看出一点,moc 的执行是在预处理器之前。因为预处理器执行之后,Q_OBJECT 宏就不存在了。
QT与c++编译链接的区别:
通常C++的编译过程为
预处理->编译->链接->运行
Qt编译的过程
moc->预处理->编译->链接->运行。
实现方法:
使用QMetaObject::invokeMethod()调用一个对象的信号或槽函数,或者,使用Q_INVOKABLE声明的函数,也可以被调用。被调用的方法所属的类必须继承于QObject类&#

你可能感兴趣的:(Qt-,qt,开发语言,c++)