使用Q_Object宏和#include <QObject>是否有相同的效果?换言之,这两种方法是否有相同的目的呢?
谢谢。
发布于 2011-04-14 09:52:19
不是的。在需要信号/插槽的类定义中,除了包含正确的标头之外,还需要Q_OBJECT。
来自api文档:
注意到,对于任何实现信号、插槽或属性的对象,Q_OBJECT宏都是必需的。还需要在源文件上运行元对象编译器。我们强烈建议在QObject的所有子类中使用这个宏,不管它们是否实际使用信号、时隙和属性,因为如果不这样做,可能会导致某些函数表现出奇怪的行为。
有关更多细节和示例代码,只需查看Qt文档中的各个示例即可。信号和插槽引用是查看的好地方。还可以查看对象模型引用。
发布于 2011-04-14 09:59:09
它们有两个不同的用途。
对象
Q_OBJECT宏必须出现在类定义的私有部分,该类定义声明自己的信号和时隙,或者使用Qt的元对象系统提供的其他服务。
如果您想使用信号、插槽和其他元对象特性,则需要有Q_OBJECT宏。
#include<QObject>
这用于包含qobject.h头文件,以便您可以使用类QObject中可用的函数。比如,QObject::connect()。
要使用Q_OBJECT宏,必须使用#include <QObject>。
发布于 2011-04-14 09:54:32
不是的。将此宏添加到从QObject派生的类中。但你还是需要头像马特说的那样!请参阅对象
https://stackoverflow.com/questions/5661376
复制相似问题