2011-07-08 73 views

回答

0

我發現我的問題。感謝所有的建議,但現在我明白了,我的問題在其他地方。

我可以得出一個QRectF(),它適合我的項目boundingRect,但...當我擴大我的QGraphicsView(不管我用fitInView()方法,或者我自己的實現)有在顯示我的境界了一些錯誤。

很少有一兩行矩形比另一些更緊密。我認爲這可能與我的QGraphicsItem有關,它們同時也是QGraphicsSvgItem

2

QGraphicsEffect可能是你的朋友在這裏。您可以將其子類化以繪製任意QGraphicsItem的邊框。請記住重新實現boundingRectFor()以包含額外的邊框。

4

圖形和繪圖形狀的座標系統可能會變得非常棘手。您經常會發現自己編寫測試圖紙以便正確使用它,但它正在繪製正在繪製的圖畫。你需要了解coordinate system。在此頁面中,請特別注意QRectF的「一個像素寬的筆」的圖片。

3

注意,對於QPainter::drawRect()的文檔提及的實際寬度:

填充的矩形的尺寸rectangle.size的()。描邊矩形的大小爲rectangle.size()加上筆寬。

鑑於這種情況,我想像你想要的東西稍微比只使用邊框更加複雜:

QRect r = boundingRect(); 
QPen p = painter->pen(); 
painter->drawRect(QRect(r.x(), r.y(), r.width()-p.width(), r.height()-p.width()));