C++ 绘制QGraphicsItem的边框

C++ 绘制QGraphicsItem的边框,c++,qt,qgraphicsitem,C++,Qt,Qgraphicsitem,如何绘制QGraphicsItem的边框?重载绘制方法中的Simplepainter->drawRect(boundingRect())不正确(右下角在项目外部)。可能是您的朋友。您可以将其子类化,以便在任意QGraphicsItem周围绘制边框。只需记住重新实现boundingRectFor()以包括额外的边框。图形和绘图形状的坐标系可能很难弄清楚。您经常会发现自己在编写测试图以使其正确,但它所绘制的正是您告诉它要绘制的内容。你需要了解这个问题。在本页上,请特别注意QRectF的“一像素宽笔”

如何绘制QGraphicsItem的边框?重载绘制方法中的Simple
painter->drawRect(boundingRect())
不正确(右下角在项目外部)。

可能是您的朋友。您可以将其子类化,以便在任意QGraphicsItem周围绘制边框。只需记住重新实现
boundingRectFor()
以包括额外的边框。

图形和绘图形状的坐标系可能很难弄清楚。您经常会发现自己在编写测试图以使其正确,但它所绘制的正是您告诉它要绘制的内容。你需要了解这个问题。在本页上,请特别注意
QRectF的“一像素宽笔”图片

请注意,文档中提到了实际宽度:

填充矩形的大小为矩形。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()));

我发现了我的问题。谢谢你的建议,但现在我明白了,我的问题出在别处了

我可以画一个
QRectF()
,它适合我的项目的boundingRect,但是。。。当我缩放我的
QGraphicsView
(无论我使用
fitInView()
方法还是我自己的实现)时,显示边框时会出现一些错误

很少有一两行rect比其他行更紧。我认为它可能与我的
qgraphicssitem
s有关,它们同时也是
QGraphicsSvgItem
s