2010-10-15 84 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());