如果我从QObject
(或子类)派生我的类,Qt文档说我必须将Q_OBJECT
宏放入我的类声明中。
它还说我需要为我的班级“运行元对象编译器”。
我不知道该怎么做。这是我需要添加到.pro文件的东西吗?我需要编辑makefile吗?对于简单的派生类来说,这似乎过于复杂。
我正在使用Qt Creator。
修改
感谢所有帮助。我发现了一些非常重要的东西:当我在Qt Creator中创建一个新类时,我必须指定“继承QWidget”作为类型信息,即使我已经指定一个Qt小部件作为我的基类(例如{{1} })。奇怪的是,Qt Creator无法自己解决这个问题,但这似乎解决了我的信号/插槽和moc问题。
答案 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.
};