【发布时间】:2012-04-24 13:50:45
【问题描述】:
我正在构建一个应用程序,其中我只为我的 mainWindow 提供了背景,并且所有其他小部件都在没有任何背景的情况下使用,但是当我运行应用程序时,它们不是 100% 透明的,它们有点半透明,有什么办法可以使它们 100 % 透明,以便只有前景可以出现而没有背景提示。
【问题讨论】:
我正在构建一个应用程序,其中我只为我的 mainWindow 提供了背景,并且所有其他小部件都在没有任何背景的情况下使用,但是当我运行应用程序时,它们不是 100% 透明的,它们有点半透明,有什么办法可以使它们 100 % 透明,以便只有前景可以出现而没有背景提示。
【问题讨论】:
您能否发布您目前用来获得透明度的代码?如果你说你得到了“半透明的东西”,我认为你创建的工具窗口并不是你真正想要的。
可以通过移除标题栏来实现真正透明的主窗口(将 QWidget 构造函数 Qt::FramelessWindowHint 作为第二个参数 - WindowFlags),以不常见的颜色绘制小部件中应该透明的所有内容(如 255,0,255 ) 然后将其切断。
一个非常原始的截断 QWidget 部分的例子:
QBitmap b(100, 100);
b.fill(Qt::black);
setMask(b);
QBitmap 在应该可见的像素上必须是黑色的,而在不可见的像素上必须是白色的。在此示例中,只有从 0,0 开始的 100,100 区域可见,窗口的其余部分将不可见。
【讨论】: