아마도 간단하지만 작동하지 못합니다. 에서 파생 된 클래스에서 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::ItemSendsGeometryChanges
은 QGraphicsItem::ItemIsMovable
을 의미하는 것으로 보입니다. 내가 QGraphicsItem::ItemSendsGeometryChanges
만 설정하면 물체가 움직일 수 있습니다 ... 왜?
3) 마지막으로 항목 이동시 변경 위치를 요구하지 않습니다.
무슨 일 이니?
linux FC16에서 qt 4.8.4를 실행 중입니다.
미리 감사드립니다.