正确使用Q_OBJECT?

时间:2010-06-10 03:13:56

标签: qt qt-creator

如果我从QObject(或子类)派生我的类,Qt文档说我必须将Q_OBJECT宏放入我的类声明中。

它还说我需要为我的班级“运行元对象编译器”。

我不知道该怎么做。这是我需要添加到.pro文件的东西吗?我需要编辑makefile吗?对于简单的派生类来说,这似乎过于复杂。

我正在使用Qt Creator。

修改

感谢所有帮助。我发现了一些非常重要的东西:当我在Qt Creator中创建一个新类时,我必须指定“继承QWidget”作为类型信息,即使我已经指定一个Qt小部件作为我的基类(例如{{1} })。奇怪的是,Qt Creator无法自己解决这个问题,但这似乎解决了我的信号/插槽和moc问题。

3 个答案:

答案 0 :(得分:4)

Qt使用moc编译器生成其元对象系统(内省类和允许信号/插槽等所需的系统)。

默认情况下,qmake在生成和编译moc_*.cpp文件时会做正确的事。

答案 1 :(得分:2)

如果您的课程转到使用信号和广告位,请使用宏Q_OBJECT。否则没有必要。如果没有信号和插槽,只需继续使用正常的c ++方式使用类,一切都应该正常工作。你不会特意继续创建moc _ * .cpp文件,但正如“theatrus”所说,qmake会为你做这些事情。希望它有所帮助。

答案 2 :(得分:1)

Q_OBJECT只需要放入你的类声明中,如下所示:

class MyObject : public QObject {
   Q_OBJECT

   // etc.
};