如何拉伸场景以适应图形视图?

10

我正在使用Qt和C++作为我的开发环境。

在我的用户界面中,我绘制了一个QGraphicsView,然后创建一个场景并添加线条到其中。

我遍历了一个包含5000个点的数组,并绘制连接每个点的线条。

QGraphicsScene *scene = new QGraphicsScene();
QPen pen2 = QPen(Qt::blue, 8.0);
int j=1;
for (int i=1; i<5000; i++)
{
    scene->addLine(xArray[i],yArray[i],xArray[j],yArray[j], pen2);
    j++;
}

问题在于我获取到的数字非常小,例如2.000e-12。这些数字会根据应用程序不断变化。
如何调整我的场景以填充我的QGraphicsView
目前,我只看到视图中心的一个点。
3个回答

11
使用你的QGraphicsScene中的sceneRect,在QGraphicsView::fitInView()中使用它,将为你完成自动缩放到适合视图的功能。

我的语法肯定有问题吧?ui->graphicsView->fitInView(scene->sceneRect()); 我也不知道啊? - JohnStudio
我不确定你的意思。你是遇到了编译/链接时的错误,还是缩放效果不如你所愿?提供更多的代码和错误/描述会更有帮助。 - Stephen Chu

1

我自己从未使用过它,但在Qt文档中有它的介绍。

void QGraphicsView::scale ( qreal sx, qreal sy )

该方法允许您在x和y轴上缩放视图。如果不足够,您可以(如果您的项目允许)在绘制线条时手动缩放,当值过小或过大时,将此相同因子应用于其他所有内容。但是,如果可能的话,我会选择Qt中包含的比例方法。

希望这有所帮助。


这对我也不起作用,而且我在网上找不到任何好的文档?ui->graphicsView->setSceneRect(x1,y1,x2,y2) ??? - JohnStudio

0

请检查这段代码是否有帮助。它只是将图像适配到GraphicsView上。

m_Scene.setSceneRect(m_QImage.rect());

m_Scene.addPixmap(QPixmap::fromImage(m_QImage,0));

m_GraphicsView.setScene(&m_Scene);

m_GraphicsView.fitInView(m_QImage.rect());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接