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