首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用Q_OBJECT?

正确使用Q_OBJECT?
EN

Stack Overflow用户
提问于 2010-06-10 03:13:55
回答 3查看 824关注 0票数 0

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

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

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

我在使用Qt Creator。

编辑:

谢谢你的帮助。我发现了一些非常重要的东西:当我在QWidget中创建一个新类时,我必须指定"Inherits QWidget“作为类型信息,即使我已经将一个Qt小部件指定为我的基类(比如QTextEdit)。Qt无法自己解决这个问题,这似乎很奇怪,但这似乎解决了我的信号/插槽和moc问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-10 03:18:46

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

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

票数 4
EN

Stack Overflow用户

发布于 2010-06-10 04:14:05

如果要使用的类使用信号和插槽,则使用宏Q_OBJECT。否则就没有必要了。如果没有信号和插槽,那么继续您使用类的正常c++方式,所有这些都应该可以正常工作。您不会专门继续创建moc_*.cpp文件,但是正如“剧场版”所说的,qmake将为您做这些事情。希望能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2010-06-10 03:20:48

只需将Q_OBJECT放在类声明中,如下所示:

代码语言:javascript
复制
class MyObject : public QObject {
   Q_OBJECT

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

https://stackoverflow.com/questions/3011400

复制
相关文章

相似问题

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