10

好的,所以我使用 Qt 和 C++ 作为我的环境。

QGraphicsView我在我的 UI 中画了一个。

然后我创建一个场景并向该场景添加线条。我遍历一个 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. 现在,我看到的只是我视野中心的一个点。我说得有道理吗?

4

3 回答 3

11

QGraphicsView::fitInView()中使用QGraphicsScene 的sceneRect将为您进行缩放以适合您。

于 2010-10-15T14:02:34.707 回答
1

我自己从未使用过它,但在 Qt doc 中有一个

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

这允许您在 x 和 y 轴上缩放视图。如果这还不够,您可以(如果在您的项目中可能的话)在值太小或太大时手动缩放,当您绘制线条并将相同的因素应用于其他所有内容时。但如果可能的话,我会使用 Qt 中包含的 scale 方法。

希望这可以帮助。

于 2010-10-15T13:32:29.517 回答
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());
于 2011-03-04T13:23:10.337 回答