我試圖將我的內容(拉伸)適合我的QDeclarativeView中的一個問題。我用通用的方式加載QML文件。我用下面的代碼重寫了showEvent和resizeEvent方法:Qt 4.8.5 QGraphicsView :: fitInView無法精確匹配
QGraphicsItem* rootItem = this->scene()->items.at(0);
QRectF rootRect = rootItem->sceneBoundingRect(); // it gives me a QRectF(0,0,1920,1080)
this->fitInView(rootRect, Qt::IgnoreAspectRatio); // Aspect doesn't matters.
的問題是,它使顯示內容周圍少許白邊(近400像素)。我已經在1920x1080,1920x1200和1440x900上進行了測試,並且我桌面上的所有這些分辨率都顯示相同問題的內容。即使在全屏模式下,它仍然保持着白色的小邊框。
爲了確保內容沒有任何問題,我將視圖的背景刷設置爲黑色,並且白色邊框變爲黑色(換句話說,內容縮小得太多以致不適合視圖)。
一旦根據內容大小改變背景部分,就不會選擇從矩形硬編碼中減去值。 (它應該動態適應)。
有什麼建議嗎?
如果你想用fitInView將整個場景放入視圖中,我認爲你看到的是mainWindow(QDeclarativeView)的邊框。看看去除這些以防止顯示白色邊框。可能是將frameRectangle設置爲一個歸零矩形,或者將邊距繼承和設置爲零將有所幫助。 – TheDarkKnight
@ Merlin069它不是窗框。正如我在問題描述中所說的,這是場景背景。姑息解決方案是用黑色QBrush(我在QML文件上使用黑色背景圖像)繪製場景背景。 – emanuelcds
只需提一下,我已經嘗試過樣式表屬性而沒有成功。這不是邊界。真正的問題是fitInView並不完全適合內容。 – emanuelcds