ItemChange未在qgraphicsItem despites标志上调用

时间:2013-11-27 09:58:41

标签: c++ qt qgraphicsitem

可能是一些简单的东西,但我无法让它发挥作用: 我在itemChange()

派生的类上重载了QGraphicsItem方法

代码如下:

QVariant itemChange(GraphicsItemChange change, const QVariant &value) 
{
cerr << "renderer_scene::item_pos_change!:" << int(change) <<endl;
return value;
}

我还设置了以下标志:

gitem->setFlag( QGraphicsItem::ItemIsMovable );
gitem->setFlag(QGraphicsItem::ItemSendsGeometryChanges);
gitem->setFlag(QGraphicsItem::ItemSendsScenePositionChanges);

运行时的输出如下:(不要关注事件总数,我的派生类有不同的实例)

renderer_scene::item_pos_change!:2
renderer_scene::item_pos_change!:2
renderer_scene::item_pos_change!:21
renderer_scene::item_pos_change!:22
renderer_scene::item_pos_change!:21
renderer_scene::item_pos_change!:21
renderer_scene::item_pos_change!:2
renderer_scene::item_pos_change!:12
renderer_scene::item_pos_change!:2
renderer_scene::item_pos_change!:12

意味着当项目可见性发生变化时调用我的函数(完成时更改== 2和12),这符合我的代码,当标志被更改时(== 21和== 22完成时)

但是当我移动我的物品时:没有。

发生了很多奇怪的事情: 1)我希望成对获得更改值:标志更改后标志已更改(21后跟22)和(2后跟12)。一些“标志改变”甚至没有匹配的“标志已经改变”。这可能表明我的一些标志设置被忽略了,这可能是我的问题......但为什么呢?

2)标志QGraphicsItem::ItemSendsGeometryChanges似乎暗示QGraphicsItem::ItemIsMovable。当我单独设置QGraphicsItem::ItemSendsGeometryChanges时,对象变得可移动......为什么?

3)最后,当我移动项目时,我没有得到任何更改位置的调用。

发生了什么事?

我在linux FC16上运行qt 4.8.4。

提前致谢

1 个答案:

答案 0 :(得分:0)

忘记吧!一个make clean + qmake + make fix it!不知道为什么,但显然与此处所述的代码无关。

抱歉!