Qt-Q_OBJECT与#include <QObject>

问题描述

|| 使用
Q_Object
宏和
#include <QObject>
是否具有相同的效果?换句话说,它们是出于同一目的的两种不同方式吗? 谢谢。     

解决方法

不需要。除了要包含正确的标题之外,您还需要在类定义中的“ 2”表示您想要放置信号/插槽的内容。 从
QObject
api文档:   请注意,Q_OBJECT宏是   对任何对象强制   实现信号,插槽或   属性。您还需要运行   源上的元对象编译器   文件。我们强烈建议您使用   此宏在以下所有子类中   QObject不管是否   他们实际上使用信号,插槽和   属性,因为可能会失败   带领某些功能展示   奇怪的行为。 只需查看Qt文档中的各种示例,即可了解更多详细信息和示例代码。信号和插槽参考是一个不错的地方。另请参阅对象模型参考。     ,它们用于两个不同的目的。 Q_OBJECT:   Q_OBJECT宏必须出现在类定义的专用部分中,该类声明声明其自己的信号和插槽或使用Qt的元对象系统提供的其他服务。 如果要使用信号,插槽和其他元对象功能,则需要具有
Q_OBJECT
宏。
#include<QObject>
: 这用于包括qobject.h头文件,因此您可以使用类ѭ3available中可用的功能。例如说
QObject::connect()
。 要使用
Q_OBJECT
宏,您必须先
#include <QObject>
。     ,否。将此宏添加到派生自
QObject
的类中。但是您仍然需要Mat所说的标题!参见http://doc.qt.io/qt-5/qobject.html#Q_OBJECT