2017-11-10 96 views
0

我已經檢查了很多解決方案,但是找不到能爲我工作的解決方案。Qt,C++:QGraphicsScene座標不起作用

我有QGraphicsScene和的QGraphicsView在我的應用程序:

MyWindow::MyWindow() 
{ 
space = new QGraphicsScene(this); 
spaceView = new QGraphicsView(space); 
spaceView ->setAlignment(Qt::AlignTop|Qt::AlignLeft); 
} 

我也有按鈕,運行函數:

void MyWindow::addWidget() 
{ 
    myWidget *w1= new myWidget(space); 
    space->addItem(w1); 

    myWidget *w2 = new myWidget(space); 
    w2->setPos(10,10); 
    space ->addItem(w2); 
} 

它增加了兩個obiects,但第二個應該是不同的COORDS (由(10,10)移動)。 當我不使用:

spaceView ->setAlignment(Qt::AlignTop|Qt::AlignLeft); 

動人的藝術品,但所有項目都在我看來的中心 - 我不想把它居中。我需要它從左上角定位。使用我在上面改變位置顯示的「setAligment」代碼之後什麼也不做。兩個對象在同一個地方。有人能告訴我如何從左上角進行定位並使其可以移動?

我不想使用:

space->setSceneRect(i.e. 0,0,1000,1000,Qt::); 

becouse我不希望限制在右側我的場景。 我還試圖用:

spaceView->fitInView(); 

,但它也沒有什麼幫助。

回答

1

你可以得到的scene使用功能位置和鍵所:

QGraphicsItem::sceneBoundingRect() 
QGraphicsItem::scenePos() 

全部項目(0,0)位置添加了第一和在此之後被轉化爲正確的位置。您可以使用GraphicsView座標系統並使用從視圖到場景的座標映射。要做到這一點,使用:

QGraphicsView::mapToScene() 
QGraphicsItem::mapToScene() 

QGraphicsView::mapFromScene() 

有關場景獲得位置

+0

你sugestions使用的功能檢查邊界幫我看看爲什麼我obiect不改變位置。在myWidget中,我有另一個在場景中被繪製的對象,並且改變它的位置,我只需要使用「w2-> rect2-> pos(10,10);」。 感謝您使用這些有用的功能 –