可能是一些简单的东西,但我无法让它发挥作用:
我在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。
提前致谢
答案 0 :(得分:0)
忘记吧!一个make clean + qmake + make fix it!不知道为什么,但显然与此处所述的代码无关。
抱歉!