qgraphicsitem的Qpaint中笔集的Qtransform比例和宽度

Qtransform scale and width of pen set in Qpaint of qgraphicsitem

你好朋友,我正在使用 setTransform-QGraphicsItem 的方法调整和旋转 QGraphicsItem,我正在 paint 中绘制任何形状的 QGraphicsItem - 方法,当我使用 setTransform 方法缩放项目时,QGraphicsItem 的边框也会变厚,并且我将名称设置为 QGraphicsItem,它也会根据缩放因子变大。那么有什么方法可以让我在绘画方法中使用 drawtext 绘制项目的边框和名称,保持与我指定的笔宽相同。

你需要用pen.setCosmetic(true)制作一支装饰笔,然后用这支笔画边框。装饰笔的宽度不依赖于应用的变换。

我推荐使用QGraphicsSimpleTextItemQGraphicsTextItem在场景中绘制文字。您可以通过调用 textItem->setFlag(QGraphicsItem::ItemIgnoresTransformations); 来禁用文本转换。使主图形项成为文本项的父项可能很方便,这样文本项相对于主项定位。

请注意,在大多数情况下不需要重新实现 QGraphicsItem::paint,因为内置的 QGraphicsItem 子类可以满足各种需求。