带有像素图的透明 QLabel

Posted

技术标签:

【中文标题】带有像素图的透明 QLabel【英文标题】:transparent QLabel with a pixmap 【发布时间】:2012-05-27 13:30:57 【问题描述】:

我有一个 QLabel,我使用 setpixmap() 在上面放了一个图像。该图像具有 Alpha 通道。

QLabel 位于 QWidget 上,该 QWidget 具有由图像指定的边框图像(以便重新缩放图像以填充 QWidget)。

在QLabel的透明部分,结果不是QWidget上指定的图像,而是“无色”Widget的灰色特征。

我的问题是我如何做到这一点,以使 QLabel 的透明部分显示 QWidget 的边框图像?

我尝试取消自动填充背景,将 QLabel 的背景颜色更改为白色透明,但没有任何帮助。

【问题讨论】:

不确定这是否重要,但您使用的是什么类型的图像(png、jpeg、?)? png,我确定它有 alpha 通道 您能否展示一个重现您的问题的最小示例? 请展示您如何创建“背景”小部件、如何设置其边框、如何创建标签以及如何“插入”它进入那个背景小部件。都是细节问题,我对 QLabels 中的透明 QImage 没有任何问题。 (对不起,我输入新行的评论,它发布了它。在做一个最小的例子时,我想我发现了问题。所以,我正在设计 QWidget 根(在树的顶部),显然根小部件没有收到样式表。如果我在上面放一个 QFrame,它已经收到了。这可能吗? 【参考方案1】:

您需要适当地设置小部件属性和窗口标志:

使用QWidget::setAttribute() 和Qt::WidgetAttribute...

Qt::WA_TranslucentBackground 需要设置为 true。

除了学习Window Flags Example 应该会有很大帮助。

如果您只是在寻找一个可以绘制无框图像的小部件...

这是一个完美的例子:

QSplashScreen Replacement

【讨论】:

以上是关于带有像素图的透明 QLabel的主要内容,如果未能解决你的问题,请参考以下文章

使用带有透明像素的 CSS Sprites 和 repeat-x background-position

透明天空盒+透明高度图的OpenGL混合问题

如何设置QPushButton背景透明样式如QLabel

如何设置QPushButton背景透明样式如QLabel

如何设置QPushButton背景透明样式如QLabel

C#裁剪图像中的透明部分