我创建了一个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个像素。为什么会这样?怎么避免这个?
答案 0 :(得分:3)
默认情况下,当场景矩形小于视图时,它位于QGraphicsView
的中心位置。
您可以使用QGraphicsView::setAlignment
进行更改。
QGraphicsView::sizeHint()
返回的视图首选大小也是场景大小,因此您可以调整视图以使其完全适合场景:
view->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
告诉布局仅使用sizeHint()
来计算窗口小部件的大小。
或者如果视图不在布局中,则必须使用
view->setFixedSize(view->sizeHint());
每次更改场景矩形时。