簡體   English   中英

盡管有標志,但未在qgraphicsItem上調用ItemChange

[英]ItemChange not called on qgraphicsItem despites flags

可能很簡單,但我無法使它正常工作:我在從QGraphicsItem派生的類上重載了itemChange()方法。

代碼如下:

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

意思是當項的可見性改變時,我的函數被調用(完成時,change == 2,完成時為12),這與我的代碼一致,當標志更改時(完成時,== 21和== 22)。

但是當我移動我的物品時:什么都沒有。

發生了許多奇怪的事情:1)我希望成對地獲得更改值:標志更改,隨后標志更改(21后跟22)和(2后跟12)。 某些“標志更改”甚至都不會跟在匹配的“標志已更改”之后。 這可能表明我的某些標志設置被忽略了,這可能是我的問題...但是為什么?

2)標志QGraphicsItem::ItemSendsGeometryChanges似乎暗示QGraphicsItem::ItemIsMovable 當我單獨設置QGraphicsItem::ItemSendsGeometryChanges時,對象變為可移動...為什么?

3)最后,當我移動物品時,我沒有接到任何更改位置的電話。

這是怎么回事??

我在Linux FC16上運行qt 4.8.4。

提前致謝

忘掉它! 一個make clean + qmake + make fixed! 不知道為什么,但顯然與此處說明的代碼無關。

抱歉!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM