QLabel
透明なウィンドウ (またはQFrame
またはQWidget
)を描画する必要がありますが、 を使用しませんWA_TranslucentBackground
。その理由は、ウィンドウには OpenGL を介してレンダリングされた他の子ウィジェットが含まれ、そのプロパティを使用すると、ここに記載されているように、それらのウィンドウが Windows で非表示になるためです。これは Mac では正常に機能しますが、Windows では機能しないため、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 ビット。
PS - 半透明のウィンドウのように動作する必要はありません。つまり、レンダリングされたウィジェットの透明な部分を通して背景をクリックできる場合ですWA_TranslucentBackground
。ここでは、透明である限り問題ありません。クリック可能である必要はありません。