2012-11-22 3 views
0

나는 그들이있는 장면의 크기에 종속적 인 QGraphicsObject를 가지고 있습니다. 그래서 내 그래픽 객체는 두 개의 이벤트가 발생할 때 알아야 할 :Qt QGraphicsScene 및 QGraphicsItem 이벤트

이 장면

내가 지금 할 방법 크기가 변경이되면이 장면

  • 에 추가됩니다
    1. -2 신호를 만듭니다 장면의 부모 : obj_create, scene_resize. gr.object의 슬롯에 연결하십시오. 그것은 최선의 방법이 아닌 것 같습니다. 나는

      덕분에 많은 또는 이 QGraphcisItem에을 sceneResized addedToScene ... 원하는 이벤트를 찾을 수 없습니다.

  • 답변

    0

    난 그냥 대답을 ...

    QVariant  itemChange(GraphicsItemChange change, const QVariant &value) 
    { 
    
        if (change == QGraphicsItem::ItemSceneHasChanged) 
        { 
    
          this->performSomeUpdates(); 
          QObject::connect(this->scene(),SIGNAL(sceneRectChanged(QRectF)),this,SLOT(sceneRectChanged(QRectF))); 
    
        } 
    
        return QGraphicsItem::itemChange(change, value); 
    
    } 
    
    1

    두 가지 방법 중 하나를 제안합니다. GraphicsItem의 QObject를 하위 클래스로 만들고 Signal/Slots를 사용하거나 자신의 인터페이스를 정의하거나 IResizableEvent에 resize 메서드를 사용할 수 있습니다. GraphicsItem에서 크기 조정 코드로 메서드를 구현합니다. Scene 클래스에서 장면 크기 조절을 감지하면 모든 항목을 반복하고 인터페이스 유형으로 캐스트 한 다음 resize 메서드를 호출하십시오.

    +0

    감사합니다 ... 정확하게 문서 조금 읽어 누군가 희망이 도움을 필요로하지만, 실제로는 필요에 대한 QGraphicsItem에서 특별한 이벤트가있다 ... – Kolyunya