Qt主窗口透明背景

Posted

技术标签:

【中文标题】Qt主窗口透明背景【英文标题】:Qt mainwindow transparency background 【发布时间】:2013-09-19 09:07:17 【问题描述】:

我想像这样在 Qt 主窗口背景中使用具有透明度和自定义边框的 png 图像。

(来源:shiaupload.ir)

有什么好主意吗?

【问题讨论】:

QWidget::setMask(const QBitmap &bitmap) 和 QPixmap::mask() 可能就是您要找的。​​span> 您也可以执行this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); 之类的操作,然后绘制背景。 @thuga - 你的最后一篇文章是一个答案。我想补充一点,如果使用 Qt4 - 存在最小化和恢复窗口的错误:bugreports.qt-project.org/browse/QTBUG-17548 【参考方案1】:

你可以这样做:

this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground);

然后在paint event 中绘制窗口的背景。

注意:正如 Dmitry 所指出的,在 Qt4 中有一个bug with minimizing and restoring the window。

另一种选择是使用QWidget::setMask(const QBitmap & bitmap),但如果区域复杂,这可能会很慢。

【讨论】:

你好,你能指出如何通过设置蒙版实现透明度吗? @Cupidvogel 文档中的例子不够吗? 不,它不起作用。我试图在这里应用它:***.com/questions/34372291/…,我无法让它工作。 @Cupidvogel 在一个只有一个主窗口的空项目上试一试。

以上是关于Qt主窗口透明背景的主要内容,如果未能解决你的问题,请参考以下文章

Qt 子窗口设置为透明

Qt窗口透明

设置透明主窗口

QWidget 背景透明

求助,关于Qt的窗口半透明,窗口上的空间不透明

Qt实现窗口半透明显示