透明的QGraphicsItemGroup作为一个整体

时间:2014-08-22 15:55:17

标签: qt transparency qgraphicsitem

我有一个带有2个“图层”的QGraphicsScene: - 背景图片 - 它上面的一些多边形(地图),有重叠的部分

我将所有多边形放在QGraphicsItemGroup中并且效果很好,但现在我想改变多边形图层的透明度。我的问题是通过改变QGraphicsItemGroup的不透明度,它改变了每个子多边形的不透明度,这样我就可以看到多边形的隐藏部分。

图像会更好地解释它。这就是我没有透明度的原因:

Opaque polygons

这就是我的透明度,注意交叉点处的白点或红点:

Ugly transparent polygons

我尝试使用QgraphicItem标记但没有成功。

我无法创建图像然后将其显示为叠加层,因为每个多边形都有不同的工具提示。或者有办法以某种方式伪造形状吗?

我在考虑绘制多边形后在QGraphicsItemGroup的paint方法中设置透明度,但我不知道在哪里查看。

我使用qt 4.8和python(pyside)。

2 个答案:

答案 0 :(得分:0)

不是将单独的多边形添加到重叠的QGraphicsItemGroup,而是使用QPainterPath

这也可以通过只绘制一个画家路径对象而不是组中的所有单独项来加速渲染。

  

我无法创建图像然后将其显示为叠加层,因为我为每个多边形提供了不同的工具提示。或者有办法以某种方式伪造形状吗?

我假设您正在研究鼠标所在的多边形,然后显示相关的工具提示,在这种情况下,您可以在场景中保留一组单独的多边形,这些多边形是隐藏的并使用它来计算鼠标在哪个多边形上。

答案 1 :(得分:0)

在Qt文档中进行了更多研究之后,我发现QGraphicsOpacityEffect完全符合我的需求。我只需要将它应用于QGraphicsItemGroup,它就像一个魅力。