2017-11-10 93 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);”。 感谢您使用这些有用的功能 –