今天这个问题纠结了我好久,后来终于找到了解决方法。
QT显示图片一般使用QLabel对象,然后setPixmap将图片显示出来,之前要做这么一个工作,直接上代码。
上面标注要注意的这行代码起初一直没有加上,因此导致画出来的图片,明明应该是透明的,总是会出现莫名其妙的花点,后来加上这行代码之后就好了。QImage sourceImage(strImageFile);//sourcefile为文件名,文件格式为PNG QImage *subImg = new QImage(width,height,QImage::Format_ARGB32); QPainter p(subImg); p.setCompositionMode(QPainter::CompositionMode_Source);//注意这一行代码 p.drawImage(0,0,sourceImage,x,y,width,height); m_pLabel = new QLabel; m_pLabel->setMinimumWidth(600); m_pLabel->setPixmap(QPixmap::fromImage(*subImg));
QT文档上如此解释这个属性,说白了就是复制,当原图片不是透明时,与SourceOver属性效果相同
The output is the source pixel. (This means a basic copy operation and is identical to SourceOver when the source pixel is opaque).
【QT】使用QPainter类drawImage函数绘制透明图片的问题,布布扣,bubuko.com
【QT】使用QPainter类drawImage函数绘制透明图片的问题
原文:http://blog.csdn.net/yangyunchenrt/article/details/22558177