|Qt中的Q_OBJECT

|Qt中的Q_OBJECT

文章图片



error C2338: No Q_OBJECT in the class with the signal 在用Qt框架写代码中 , 有时会出现这样的错误 。 Q_OBJECT作为Qt中的一个很重要的宏定义 , 有的人可能不太会去了解它 , 直接按部就班的在类里的头部复制粘贴 , 但是有时忘记粘贴了就出大问题了 。 正如MFC里的消息映射宏 , 小白总是会抓狂 , 明明我啥都没改 , 为啥编译不过去 。



在Qt中 , 当派生类需要用到信号与槽机制时 , 需要做以下两件事情:

1.该类派生QObject类 , 也就是所有的类都是源于QObject类 , QObject是所有Qt的基类;
2.类中要有Q_OBJECT宏 。
信号与槽是Qt应用开发的基础 , 可以将两个毫无关系的对象链接在一起 。 槽就是C++里的函数方法 , 信号就是类似windows的消息 , 当发送信号时 , 槽会被自动调用 , 但是一切的前提都是必须要有Q_OBJECT宏 , 你才能使用这个机制 。
【|Qt中的Q_OBJECT】至于为什么要使用Q_OBJECT宏 , 它的底层原理 , 就不详细说明 。 只是提醒你 , 如果你的信号与槽不产生作用了 , 记得优先排查这里 。