当QGraphicsScene中宽度减小到200以下时,x,y点移动

时间:2012-02-29 14:06:28

标签: qt qt4

我创建了一个QGraphicsScene

scene = new QGraphicsScene(0,0,200,200);

并绘制一条线scene.addLine(0,0,100,100,pen);,我得到了从(0,0)到(100,100)正确绘制的线。

当我将代码更改为

scene = new QGraphicsScene(0,0,150,200);

绘制同一条线scene.addLine(0,0,100,100,pen);,它的x,y点向右侧移动50个像素。为什么会这样?怎么避免这个?

1 个答案:

答案 0 :(得分:3)

默认情况下,当场景矩形小于视图时,它位于QGraphicsView的中心位置。

您可以使用QGraphicsView::setAlignment进行更改。

<小时/> 由于QGraphicsView::sizeHint()返回的视图首选大小也是场景大小,因此您可以调整视图以使其完全适合场景:

view->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

告诉布局仅使用sizeHint()来计算窗口小部件的大小。
或者如果视图不在布局中,则必须使用

设置大小
view->setFixedSize(view->sizeHint()); 

每次更改场景矩形时。