0

我最近将一个应用程序从 Qt 4 迁移到了 Qt 5。我曾经使用QPen()宽度为零的默认值,因此很美观。迁移后,我无法将其保留为默认值(默认笔已更改为宽度 1,因此不是装饰性的)。所以我简单地添加了一个电话,setCosmetic(True)所以我的笔是化妆品但宽度为 1。

然而,这导致了一些意想不到的(对我来说)行为。特别是我有一些QGraphicsEllipseItem对象给出了不正确的选择行为:具体来说,一个非常小的椭圆,放大到一个大尺寸,会shape()比它正在绘制的要大得多。它是用化妆笔(1 像素)绘制的,但形状的计算就像笔的大小为 1 一样。

这很容易解决:我只是将QPen宽度设置为 0。但它在我脑海中提出了一个问题。

具有非零宽度的化妆笔的预期语义是什么?这是QGraphicsEllipseItem预期的行为,并且具有有用的应用程序,还是出乎意料?

4

1 回答 1

0

请参阅文档QGraphicsItem::paint()

QGraphicsItem 不支持使用宽度非零的化妆笔。

于 2019-04-17T11:13:53.850 回答