繁体   English   中英

Qt - Q_OBJECT与#include <QObject>

[英]Qt - Q_OBJECT vs. #include <QObject>

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

谢谢。

不需要。除了包含正确的标题之外 ,您还需要在要定义信号/插槽的类的定义中使用Q_OBJECT

来自QObject api文档

请注意,Q_OBJECT宏对于实现信号,槽或属性的任何对象都是必需的。 您还需要在源文件上运行元对象编译器。 我们强烈建议在QObject的所有子类中使用此宏,无论它们是否实际使用信号,插槽和属性,因为如果不这样做可能会导致某些函数出现奇怪的行为。

只需查看Qt文档中的各种示例,即可获得更多详细信息和示例代码。 信号和插槽参考是一个很好看的地方。 另请参阅对象模型参考。

它们用于两个不同的目的。

Q_OBJECT

Q_OBJECT宏必须出现在类定义的私有部分中,该部分定义声明自己的信号和插槽,或者使用Qt的元对象系统提供的其他服务。

如果要使用信号,插槽和其他元对象功能,则需要具有Q_OBJECT宏。

#include<QObject>

这用于包含qobject.h头文件,以便您可以使用类QObject可用的函数。比如说, QObject::connect()

要使用Q_OBJECT宏,您必须#include <QObject>

不。您可以将此宏添加到从QObject派生的类中。 但你仍然需要像Mat所说的标题! 请参见http://doc.qt.io/qt-5/qobject.html#Q_OBJECT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM