QT中添加Q_OBJECT出现的问题

转载 2012年03月28日 23:22:43

Multiple Inheritance Requires QObject to Be First(多重继承QObject一定要放在前面)

我在用class My_Node : public QGraphicsItem,public QObject来生成自己的类时,想使用信号和槽机制,但这是dys_node.h中没有Q_OBJECT,不能使用信号槽。我将Q_OBJECT加上之后,出现几个不知道是什么的错误。然后我将工程目录下的Makefile删除,然后重新编译、链接文件,刚才的错误消失了,但出现如下三个错误:

error: 'staticMetaObject' is not a member of 'QGraphicsItem'

error: 'qt_metacast' is not a member of 'QGraphicsItem'

error: 'qt_metacall' is not a member of 'QGraphicsItem'

通过google,我发现这个错误是由于没有继承QObject类而引起的,但是我已经继承了QObject类了啊,到底是怎么回事呢?

最后终于在网上找到了答案,当多继承的时候,要将QObject放在前面,即将类的声明改为

class My_Node : public QObject,public QGraphicsItem

问题就解决了!!!

下面是我从网络上找到的说明原文:

Just got this error message while compiling a tiny class that derives from QTreeWidgetItem:

error C2039: 'staticMetaObject' : is not a member of 'QTreeWidgetItem'

What this is saying is that QTreeWidgetItem does not inherit from QObject, meaning that your own, singly-inherited class also does not inherit from QObject. Inheriting from QObject is one of the prerequisites to using the Q_OBJECT macro, which, if you’re anything like me, you automatically insert into any Qt GUI related class.

If you’re not using any of the meta object stuff in your subclass, such as signals/slots or properties, just take out the Q_OBJECT macro. If you need to use signals and slots, you’ll need to make your subclass multiply-inherit from QObject as well. If you take this route, remember that “Multiple Inheritance Requires QObject to Be First”, otherwise you’ll get either the same error as above, or something along the lines of “YourClass inherits from two QObject subclasses” from the moc。


【QT】收集Q_OBJECT 是怎样的

网络对他的认识有很多种,综合起来都是一个概念 第一种是:只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制。 第二种是:有加入了Q_OBJECT机制才能使用信号和槽 第...

【Qt】Q_OBJECT宏,编译报错,解决办法(多继承Object情况下)

多继承QObject情况下 使用Q_OBJE宏编译出错问题的解决办法

分享iMX6Q自编QT程序运行报缺少库文件问题解决方法

写了一个QT小程序,但将程序拷贝到飞凌OKMX6Q-C板子上运行时出现错误, 经过查询资料,比对分析后发现,这是由于imx6开发板启动的过程中没有加载tslib和qt4.8.5的相应的环境变量,这些环...

[代码问题记录Q1]c#Listview动态添加数据时阻止重复添加

※问题详情: 写代码过程中,首先解决了主窗体与子窗体之间数据动态联系的问题(非模态化传值加委托事件),但是Listview控件总会添加进一些重复的信息。为此,我想到的办法是:在数据添加之前进行一系列的...

Q_OBJECT的一些注意事项

今天被 Qt的一个编译错误弄得心

Q_OBJECT宏

Q_OBJECT宏的作用   The Q_OBJECT macro at the beginning of the class definition is necessary for all cl...

宏Q_OBJECT

所有QObject的派生类在官方文档中都推荐在头文件中放置宏Q_OBJECT,那么该宏到底为我们做了哪些工作?在qobjectdef.h中有下面的代码: view plain...

Q_OBJECT 宏

转载自http://www.devbean.info/2012/08/qt-study-road-2-custom-signal-slot/ 上一节我们详细分析了 connect() 函数。使用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT中添加Q_OBJECT出现的问题
举报原因:
原因补充:

(最多只允许输入30个字)