赞
踩
让QGraphicsPixmapItem和它的相关类背景透明,除了可以设置屏蔽色以外(屏蔽色透明),还有种方法就是在绘制的时候,让画刷先将背景色用透明填充然后再绘制,当然,你绘制的设备图片必须是ARGB类型。
painter.setCompositionMode(QPainter::CompositionMode_Clear); //设置为Clear模式
painter.fillRect(XXXX); // 然后用透明填充整个区域
painter.setCompositionMode(QPainter::CompositionMode_SourceOver); // 再设置回默认模式
painter.drawXXXX; //然后绘制你想要的东西
这样就可以变透明了。
然而变成透明后会有个问题,就是透明的区域无法被选中拖动,因为鼠标点击的时候,点击的已经不是Item这个层级,而是变到它后面的窗口去了。
查阅Qt的官方关于QGraphicsPixmapItem的文档,里面有个ShapeMode
可以知道默认是MaskShape,这个模式下Item的形状只包括不透明的像素,也就是说透明的像素不算在item里面了。
再看下面的QGraphicsPixmapItem::BoundingRectShape,这个模式下是根据整个Item的轮廓来追踪的,而且包含透明区域。
最后一个是QGraphicsPixmapItem::HeuristicMaskShape,也就是蒙版。
这边应该用第二种。
setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
现在可以拖曳透明区域了。
希望可以帮助到需要的人(o゜▽゜)o☆[BINGO!]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。