OpenEdv-开源电子网

标题: linux+qt设置透明,本该透明的地方显示黑色,请问如何解决? [打印本页]

作者: wpwp123    时间: 2024-1-1 17:05
标题: linux+qt设置透明,本该透明的地方显示黑色,请问如何解决?
qt版本是5.15.2函数和运行结果如下:


作者: wpwp123    时间: 2024-1-1 17:07
四个角本该显示透明的,结果现在显示黑色,请问怎么解决啊啊啊?
作者: dpwz    时间: 2024-1-2 16:50
wpwp123 发表于 2024-1-1 17:07
四个角本该显示透明的,结果现在显示黑色,请问怎么解决啊啊啊?

顶一下
作者: dpwz    时间: 2024-1-3 12:57
没人知道吗
作者: 夜雨扰人烦    时间: 2024-9-29 18:30
或许你可以排查一下你的屏幕驱动有没有配置好呢, 支不支持透明度设置
作者: suhetao    时间: 2025-3-8 23:56
两个方式:
1、修改qt源码,qt5不确定qt4可以改源码可以解决。去qt源码路径下
qtbase/src/platformsupport/fbconvenience/qfbscreen.cpp
把
mCompositePainter->fillRect(rect, Qt::black);
改成
mCompositePainter->setCompositionMode(QPainter::CompositionMode_Source);
mCompositePainter->fillRect(rect, Qt::transparent);
mCompositePainter->setCompositionMode(QPainter::CompositionMode_SourceOver);
2:不修改qt源码,可以参考不规则窗口的实现,学会QWidget::setMask遮罩的使用,美工配合搞个遮罩的图片。

ps:
要注意窗口底下要有东西,最简单的做法就是确保窗口在所有窗口堆栈之上。屏幕的底色并不是透明!!!




欢迎光临 OpenEdv-开源电子网 (https://www.openedv.com/) Powered by Discuz! X3.4