首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt - Q_OBJECT与#include <QObject>

Qt - Q_OBJECT与#include <QObject>
EN

Stack Overflow用户
提问于 2011-04-14 09:48:51
回答 3查看 9.7K关注 0票数 4

使用Q_Object宏和#include <QObject>是否有相同的效果?换言之,这两种方法是否有相同的目的呢?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-04-14 09:52:19

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

来自api文档

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

有关更多细节和示例代码,只需查看Qt文档中的各个示例即可。信号和插槽引用是查看的好地方。还可以查看对象模型引用。

票数 11
EN

Stack Overflow用户

发布于 2011-04-14 09:59:09

它们有两个不同的用途。

对象

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

如果您想使用信号、插槽和其他元对象特性,则需要有Q_OBJECT宏。

#include<QObject>

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

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

票数 3
EN

Stack Overflow用户

发布于 2011-04-14 09:54:32

不是的。将此宏添加到从QObject派生的类中。但你还是需要头像马特说的那样!请参阅对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5661376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档