2017-06-15 97 views
2

我試圖在Qt上繪製一個堆疊的條形圖,我跟着文檔上的教程,但是當我試圖把圖形放在QGraphicsView裏面時,我得到了一個未使用的空間並且無法管理使場景符合觀點。fit QGraphicsScene to QGraphicsView

我的代碼是一樣的文檔,一加以下,以使場景在視圖中顯示:

QGraphicsScene *scene = new QGraphicsScene(this); 
scene->addWidget(chartView); 
ui->view->setScene(scene); 

而我得到的是這種

enter image description here

正如你可以看到有很多未使用的空間,它使文本消失,我想使圖形適合視圖,但我似乎無法找到一種方法來做到這一點。

我試過很多不同的方式使用

ui->view->ensureVisible (scene->sceneRect()); 
ui->view->fitInView(scene->sceneRect(),Qt::KeepAspectRatio); 

ui->view->setSceneRect(0,0,ui->view->frameSize().width(),ui->view->frameSize().height()); 

,但似乎沒有任何工作(第二個解決方案只是移動圖形的左上角)

+0

你在Widget構造函數中做這個嗎? – vaultah

+0

@vaultah不,我有一個函數在qwidget中被從mainwindow調用並繪製圖 –

+0

@vaultah我jjust試圖把它放到構造函數中但我得到了相同的結果 –

回答

1

按評論......真正的問題是chartView的基本大小,而不是與QGraphicsViewQGraphicsScene有什麼關係。

QWidget被添加到QGraphicsScene時,得到的QGraphicsProxyWidget通常會遵守該小部件的大小提示和策略。

此外,雖然,QGraphicsScene將現場設置矩形的所有場景中的項目的邊界矩形,然後QGraphicsView將根據任何viewport anchor是力位置的情景。如果場景中有一組複雜的項目或邊界矩形小於GraphicsView中顯示的矩形,則最終結果可能會在視覺上產生誤導。

因此,如果一個小部件在添加到QGraphicsScene時確實看起來很奇怪,那麼通過在桌面上將其顯示爲頂級窗口進行測試通常是一個不錯的主意,並且確保它在進一步行動之前按照預期行事。