我一直在谷歌搜索这个话题,由于某种原因,我认为我没有正确设置面具。我想要做的是在具有圆形形状的QLabel内显示图像。 不应显示跨越边界的图像部分。这就是我正在做的事情
QPixmap circ( ":/qt/images/circ.png" );
QPixmap img( ":/qt/images/no.bmp" );
ui.label_h->setMask(circ.mask());
ui.label_h->setPixmap(img);
circ文件是一个png图像,其中有一个黑色填充的圆圈,img显然是一个图像,任何有关如何实现这一点的建议都将受到高度赞赏。我的代码显然只是在方形边界中显示图像
更新
这就是我正在使用的
QPixmap circ( ":/qt/images/circ.png" );
QPixmap mask = circ.createMaskFromColor(Qt::black, Qt::MaskOutColor);
QPixmap img( ":/qt/images/no.bmp" );
ui.label_h->setMask(mask);
ui.label_h->setPixmap(img);
这是之前的结果
这些是链接
答案 0 :(得分:0)
你正在调用circ.mask(),根据Qt文档: -
从像素图的alpha通道中提取位图蒙版。
你说圈中的图像有一个黑色的圆圈,所以要么将它改成圆圈的alpha通道,要么从图像中创建遮罩: -
QPixmap mask = circ.createMaskFromColor(Qt::black, Qt::MaskOutColor);
然后使用这个面具: -
ui.label_h->setMask(mask);