qt图片透明部分显示白色怎么办
时间: 2023-02-14 19:33:06 浏览: 441
这个问题可能是由于 Qt 使用的不是 ARGB 颜色格式造成的。ARGB 颜色格式包含了 alpha 通道信息,可以用来表示透明度。如果 Qt 程序使用的是 RGB 颜色格式,就可能导致图像中的透明部分显示为白色。
要解决这个问题,可以尝试使用带有 alpha 通道的颜色格式来渲染图像。例如,在 Qt 中,可以使用 QImage::Format_ARGB32 或 QImage::Format_ARGB32_Premultiplied 格式来载入图像,并使用 QPainter::drawImage() 方法将图像绘制到屏幕上。这样就可以正确地显示图像的透明部分了。
相关问题
qt的widget设置border-image后,图片透明部分显示白色
Qt的Widget是可以设置边框图像的,但是你必须使用QFrame作为容器并为其设置边框图像。在这种情况下,如果图像的透明部分显示为白色,这可能是由于图像格式不正确导致的。Qt只支持PNG图像作为边框图像,并且必须使用32位PNG图像才能正确呈现透明度。所以你应该确保你使用的图像是32位PNG格式的。
QT 显示 透明 PNG
在QT中显示透明PNG图片可以使用QImage和QPixmap两种方式。根据引用\[1\]中的代码,可以看到使用QPixmap可以实现背景透明。首先创建一个QWidget对象,然后使用QPixmap对象生成一个透明的图片,接着使用QPainter对象对该图片进行绘制,最后保存为PNG格式的图片。这样就可以实现在QT中显示透明PNG图片。另外,根据引用\[2\]中的描述,如果读入的图片本身不支持alpha通道,可以使用新的QImage对象进行修改。具体的代码可以参考引用\[2\]中的示例。
#### 引用[.reference_title]
- *1* [QT - 图像处理 ( 7 ) - 生成透明色图片](https://blog.csdn.net/LearnLHC/article/details/96867622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [Qt处理照片实现白色背景转透明](https://blog.csdn.net/weixin_30313409/article/details/117602750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]