Qt - Q_OBJECT与#include <qobject> </qobject>

时间:2011-04-14 09:48:51

标签: c++ qt qobject

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

感谢。

3 个答案:

答案 0 :(得分:11)

没有。您需要在{/ 1}}中定义您想要信号/插槽的内容,另外以包含正确的标题。

来自QObject api docs

  

请注意,Q_OBJECT宏是   任何对象的强制性   实现信号,插槽或   属性。你还需要运行   源对象上的元对象编译器   文件。我们强烈建议使用   这个宏在所有子类中   QObject无论是否   他们实际上使用信号,插槽和   属性,因为没有这样做可能   引导某些功能展示   奇怪的行为。

只需查看Qt文档中的各种示例,即可获得更多详细信息和示例代码。 Signals and Slots引用是一个值得关注的好地方。另请参阅Object Model参考。

答案 1 :(得分:3)

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

Q_OBJECT

  

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

如果您想使用信号,广告位和其他元对象功能,则需要拥有Q_OBJECT宏。

#include<QObject>

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

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

答案 2 :(得分:0)

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