アプリケーションに長方形以外のポップアップ ウィジェットがあります。
それらのクラスは、その透明性を実現するために次を定義します。
setAttribute(Qt::WA_NoSystemBackground, true);
setAttribute(Qt::WA_TranslucentBackground, true);
私も使用します:
this->setWindowFlags(Qt::Popup| Qt::FramelessWindowHint);
問題は、Windows 7 で、ウィンドウの下部と右側に自動的に「影」が描画されることです。これは非常に望ましくありません。
そこで、Qt::Popup の代わりに Qt::Tool を使ってみました
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
これは視覚的に機能します。影はありませんが、Qt::Popup の場合のように、ウィジェット ウィンドウの外側でマウス クリックしても自動的に閉じる/非表示になりません。
したがって、次の 2 つのソリューションのいずれかが必要です。
- Qt::Popupを使用して、Windows の自動シャドウ装飾を取り除く方法
- Qt::Tool ウィンドウの外側でマウス クリックが発生するようにする方法。
1 つのメモ: 私のアプリケーションは、Windows XP 以降用に構築されています。Vista/Win7 のみのランタイム DLL を使用することも、「Windows XP」と「Vista 以降」の個別のビルドを使用することもできません。
どんなアドバイスでも大歓迎です。