是否可以为 QWidget 分配 alpha 透明掩码?我知道如何设置蒙版,setMask
但它似乎只支持黑白蒙版。是否可以让它支持真正的 Alpha 通道?
即目前我有一个这样的PNG:
和这样的小部件:
如果我在 QPixmap 中加载我的 PNG 并将其设置为蒙版,我会得到这个(注意边缘):
但是我想得到这个(平滑的边缘):
知道怎么做吗?
注意:我在小部件上做一些更复杂的绘图,必须限制在遮罩区域,所以我不能简单地将我的 PNG 设置为小部件的背景图像。
是否可以为 QWidget 分配 alpha 透明掩码?我知道如何设置蒙版,setMask
但它似乎只支持黑白蒙版。是否可以让它支持真正的 Alpha 通道?
即目前我有一个这样的PNG:
和这样的小部件:
如果我在 QPixmap 中加载我的 PNG 并将其设置为蒙版,我会得到这个(注意边缘):
但是我想得到这个(平滑的边缘):
知道怎么做吗?
注意:我在小部件上做一些更复杂的绘图,必须限制在遮罩区域,所以我不能简单地将我的 PNG 设置为小部件的背景图像。
我认为您最好的路线是在QPainter 的组合模式中。
例如:
QPixmap PixmapToBeMasked(Size);
PixmapToBeMasked.fill(QColor(255, 255, 255, 120));
QPixmap Mask = DoSomethingToGetAMask();
QPainter Painter(&PixmapToBeMasked);
Painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
Painter.drawPixmap(0, 0, Mask.width(), Mask.height(), Mask);
这将很好地处理你的小部件的绘制。如果您仍然需要屏蔽鼠标事件,您可能需要做一些额外的工作。