• 8258阅读
  • 6回复

从QGraphicsItem继承的类如何使用QAction? [复制链接]

上一主题 下一主题
离线superpanda
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-02
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
关键词: QObject右键菜单
可能是因为QGraphicsItem不是从QObject继承来的类,导致不能用QAction和slot,connect()也找不到定义。
但是如果将MyClass多重继承QGraphicsItem和QObject,就不能在声明类的时候加上
Q_OBJECT 这句话,否则会有 undefined reference to 'vtable for MyClass'
怎样才能让作用在MyClass上的右键菜单有效呢?
离线dbzhang800

只看该作者 1楼 发表于: 2010-11-02
引用楼主superpanda于2010-11-02 18:41发表的 从QGraphicsItem继承的类如何使用QAction? :
如果将MyClass多重继承QGraphicsItem和QObject,就不能在声明类的时候加上Q_OBJECT 这句话,



结论性错误。可以多重继承,可以加 Q_OBJECT

当然,你也可以直接继承 QGrahicsObject.

至于你说的错误,和你这儿没有必然联系。因为你添加Q_OBJECT之后,没有重新运行过qmake,也没有修改过你的pro文件(会使qmake自动运行)
离线0354030w

只看该作者 2楼 发表于: 2010-11-02
完全可以用Q_OBJECT宏,关键是 你要这样写 myItem:public QObject,public QGraphicsItem
要是QObject写在QGraphicsItem后面的话 就会报错!
离线superpanda
只看该作者 3楼 发表于: 2010-11-03
引用第2楼0354030w于2010-11-02 20:47发表的  :
完全可以用Q_OBJECT宏,关键是 你要这样写 myItem:public QObject,public QGraphicsItem
要是QObject写在QGraphicsItem后面的话 就会报错!

谢谢回复!
我确实这样写的,但只要加上Q_Object的宏以后,还是有vtable的错误,怎么办呢?
离线superpanda
只看该作者 4楼 发表于: 2010-11-03
回 1楼(dbzhang800) 的帖子
请问应该如何修改qmake或者pro文件呢?
我是在Windows下用Qt Creator的
离线dbzhang800

只看该作者 5楼 发表于: 2010-11-03
Re:回 1楼(dbzhang800) 的帖子
引用第4楼superpanda于2010-11-03 00:23发表的 回 1楼(dbzhang800) 的帖子 :
请问应该如何修改qmake或者pro文件呢?
我是在Windows下用Qt Creator的

如果你不知道怎么在qtcreator下运行qmake,在pro文件随便加个空格或加一行注释总该没问题吧?
离线superpanda
只看该作者 6楼 发表于: 2010-11-03
回 5楼(dbzhang800) 的帖子
哦,原来是这样!太感谢了!赞!
快速回复
限100 字节
 
上一个 下一个