2010-10-15 40 views
9

好的,所以我使用Qt和C++作为我的环境。Qt GraphicsView拉伸场景适合

我在我的UI中绘制了一个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。现在,我所看到的只是我认为的中心点。我有道理吗?

回答

1

我从来没有使用过自己,但在Qt的文档有一个

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

,使您可以缩放在x和y轴的视图。如果它不够,你可以(如果你的项目可能的话)在数值太小或太大时手动缩放,当你绘制线条并将这个相同的因子应用于其他的东西时。但是如果可能的话,我会采用Qt中包含的缩放方法。

希望这会有所帮助。

+0

这对我来说也不起作用,而且我在网上找不到任何好的文档? ui-> graphicsView-> setSceneRect(x1,y1,x2,y2)??? – JohnStudio 2010-10-16 16:12:55

10

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

+0

我的语法一定有什么问题? UI-> graphicsView-> fitInView(scene-> sceneRect());我不知道?? – JohnStudio 2010-10-16 16:14:31

+0

我不确定你的意思。你是否得到了编译/链接时错误,或者它没有按照你的想法缩放?更多的代码和错误/描述会更有帮助。 – 2010-10-17 14:46:49

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());