2012-11-22 103 views
0

我有一些QGraphicsObjects依賴於它們所處的場景的大小。所以,我的圖形對象需要,當兩個事件發生要知道:Qt QGraphicsScene和QGraphicsItem事件

  1. 當它被添加到場景
  2. 當它的場面被調整

我這樣做,現在是這樣的 - 創建2個信號在場景的父級中:obj_create,scene_resize。並將它們連接到gr.object的插槽。這似乎不是最好的方法。我找不到任何事件像addedToScene在QGraphcisItem sceneResized ...

謝謝了。

回答

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或定義自己的接口,可以使用resize方法說IResizableEvent。在GraphicsItem中,您使用調整大小的代碼實現了該方法。當您在Scene類中檢測到場景大小調整時,只需遍歷所有項目,將它們轉換爲接口類型並調用resize方法。

+0

謝謝,但實際上存在的QGraphicsItem一個特殊的事件,需要... – Kolyunya

相關問題