我需要绘制透明窗口(使用
QLabel
、QFrame
或QWidget
),但是不要使用WA_TranslucentBackground
。这是因为这些窗口将包含通过OpenGL渲染的其他子窗口,使用该属性会使这些窗口在Windows上变得不可见,如此处所述。尽管在Mac上可以正常工作,但我需要在Windows上使用不同的解决方案,因为它在那里无法工作。我尝试过:设置一个空的pixmap
。但它仍然显示为灰色背景:#include <QApplication>
#include <QLabel>
#include <QBitmap>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel l;
l.setWindowFlags(Qt::FramelessWindowHint);
QPixmap p("");
l.setPixmap(p);
l.setScaledContents(true);
l.resize(300, 500); //just to test my idea
l.setMask(p.scaled(l.width(),l.height(),Qt::IgnoreAspectRatio,
Qt::SmoothTransformation).mask());
l.show();
return a.exec();
}
有没有其他方法可以在Windows上实现完全透明的窗口?平台 - Qt 5.3.1,32位。
P.S - 它不需要像半透明窗口那样行为,即背景可以通过渲染WA_TranslucentBackground
的小���件的透明部分进行点击。只要它是透明的,就可以了,不需要“穿透”点击。