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主窗口透明背景的主要内容,如果未能解决你的问题,请参考以下文章