我有一個QGraphicsScene「場景」和QGraphicsView「graphicsView」。QGraphicsScene :: clear不會改變sceneRect
我有一個繪圖方法。當我需要重繪所有圖形時,我稱這種方法。一切都好。但是我意識到scene-> clear()不會改變sceneRect。
我也試過:
graphicsView->items().clear();
scene->clear();
graphicsView->viewport()->update();
之後,如果我通過
QRectF bound = scene->sceneRect();
qDebug() << bound.width();
qDebug() << bound.height();
得到sceneRect我期待bound.width和bound.height是 '0'。但他們不是。我每次都能看到以前的值。當我清除場景本身時如何清除sceneRect?
它給出了sceneRect仍然是相同的一些問題,同時採用graphicsView-> fitInView()method.I使用下面的代碼:
QRectF bounds = scene->sceneRect();
bounds.setWidth(bounds.width()*1.007); // to give some margins
bounds.setHeight(bounds.height()); // same as above
graphicsView->fitInView(bounds);
雖然我完全清除現場,只加一個相當小的矩形,由於sceneRect仍然太大,矩形不適合放入視圖。
我希望我能解釋我的問題。
使用graphicsView-> fitInView(scene-> itemsBoundingRect())代替graphicsView-> fitInView(scene-> sceneRect())解決了我的問題。但sceneRect仍然太大。刪除項目不會更改sceneRect。我認爲這個問題將在未來對我產生一些問題:) – mehmetfa
@mehmetfa \t 創建場景後不需要設置場景矩形。如果沒有設置,那麼它將總是基於內部項目的邊界矩形進行計算。你是否嘗試刪除你設置場景矩形的那一行? –
@mehmetfa如果您的問題已解決,請將問題標記爲已解決。 –