2013-11-27 6 views
0

아마도 간단하지만 작동하지 못합니다. 에서 파생 된 클래스에서 itemChange() 메서드를 오버로드했습니다. 나는 또한 다음과 같은 플래그를 설정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); 

다음과 같이 실행의 출력은 다음과 같습니다 (총 수에 어떤 관심을 지불하지 않습니다 사건의 종류, 나는 파생 된 클래스의 다른 instanciation을 가지고)

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 

그 의미는 내 func 플래그가 변경되면 (== 21 및 == 22) 완료 될 때 아이템 코드가 변경되면 (코드 == 2 및 완료시 12), 코드에 따라 코드가 호출됩니다.

하지만 내 항목을 이동할 때 : 아무 것도 없습니다.

많은 변경 사항이 있습니다. 1) 변경 사항 값을 다음과 같이 예상합니다. 플래그 변경 후 플래그 변경 (21 다음에 22) 및 (2 다음에 12). 일부 "플래그 변경"은 일치하는 "플래그 변경"이 뒤따라 오지 않습니다. 이것은 아마도 내 플래그 설정 중 일부가 무시 될 수 있음을 나타냅니다. 내 문제 일 수 있지만 그 이유는 무엇입니까?

2) 플래그 QGraphicsItem::ItemSendsGeometryChangesQGraphicsItem::ItemIsMovable을 의미하는 것으로 보입니다. 내가 QGraphicsItem::ItemSendsGeometryChanges 만 설정하면 물체가 움직일 수 있습니다 ... 왜?

3) 마지막으로 항목 이동시 변경 위치를 요구하지 않습니다.

무슨 일 이니?

linux FC16에서 qt 4.8.4를 실행 중입니다.

미리 감사드립니다.

답변

0

잊어 버려요! a clean + qmake +는 그것을 고쳐줍니다! 이유는 모르겠지만 여기에 명시된 코드와는 분명히 관련이 없습니다.

죄송합니다.

관련 문제