带有像素图的透明 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的主要内容,如果未能解决你的问题,请参考以下文章