如何启用透明的QGraphicsPixmapItem来接收鼠标单击事件?

时间:2014-08-08 14:48:52

标签: qt events

我有一个QGraphicPixmapItem作为我程序中的游戏片段。它有三个主要状态:红色,蓝色和空白。问题是,当空白时,该部分不可点击。

当红色时,我将该片段的像素图更改为红色,模糊的类似于棋子的png。当蓝色时,我也这样做。当空白时,我使用完全透明的png。

这个空白,完全透明的像素图是为什么(据我所知)事件正在通过它。当我通过将像素图更改为红色检查器来重新编写它,然后手动将不透明度重置为零时,同样的事情发生了。然而,当我在新红色片段中留下0.01不透明度时,事件就会触发。

显然,透明意味着事件会通过您传递给QGraphicPixmapItem。如何更改并使其接收事件?或者我的结论是错的?

1 个答案:

答案 0 :(得分:0)

您所看到的是shapeMode所描述的正确行为。

您可以将其更改为使用QGraphicsPixmapItem :: BoundingRectShape,正如文档所述: -

  

...没有考虑像素图上的任何透明区域。

如果你仍然需要遵守透明度,那么你可以从QGraphicsPixmap项继承并重新实现shape函数以将不透明度设置为0.1,调用基类形状函数并在之后将其设置回来。