问题描述
||
使用
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