当前位置:   article > 正文

关于QGraphicsPixmapItem背景透明和无法拖曳问题_qgraphicspixmapitem 透明度

qgraphicspixmapitem 透明度

让QGraphicsPixmapItem和它的相关类背景透明,除了可以设置屏蔽色以外(屏蔽色透明),还有种方法就是在绘制的时候,让画刷先将背景色用透明填充然后再绘制,当然,你绘制的设备图片必须是ARGB类型。

painter.setCompositionMode(QPainter::CompositionMode_Clear); //设置为Clear模式
painter.fillRect(XXXX); // 然后用透明填充整个区域
painter.setCompositionMode(QPainter::CompositionMode_SourceOver); // 再设置回默认模式
painter.drawXXXX; //然后绘制你想要的东西
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
这样就可以变透明了。
然而变成透明后会有个问题,就是透明的区域无法被选中拖动,因为鼠标点击的时候,点击的已经不是Item这个层级,而是变到它后面的窗口去了。
查阅Qt的官方关于QGraphicsPixmapItem的文档,里面有个ShapeMode
在这里插入图片描述
在这里插入图片描述

可以知道默认是MaskShape,这个模式下Item的形状只包括不透明的像素,也就是说透明的像素不算在item里面了。

再看下面的QGraphicsPixmapItem::BoundingRectShape,这个模式下是根据整个Item的轮廓来追踪的,而且包含透明区域。

最后一个是QGraphicsPixmapItem::HeuristicMaskShape,也就是蒙版。
 
这边应该用第二种。

setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
  • 1

现在可以拖曳透明区域了。
在这里插入图片描述
希望可以帮助到需要的人(o゜▽゜)o☆[BINGO!]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/297446
推荐阅读
相关标签
  

闽ICP备14008679号