2

フレームレスのポップアップ ウィンドウ (トップ レベル) をいくつか開こうとしています。私はこれを達成することができます:

window.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog)

しかし、問題は、Windows が OS コンポジターを通過しないことです (たとえば、Windows ではドロップ シャドウがありません)。Qt.Popup フラグと Qt.ToolTip フラグを使用してウィンドウの影を実現できますが、どちらにも動作の問題があり、ツールチップは常に上部に表示され、フォーカスが失われるとポップアップが閉じます。

では、デフォルトの OS ウィンドウ マネージャーのシャドウ効果でフレームレス ウィンドウを表示する方法はありますか?

4

2 に答える 2

2

Windowsで回避策を見つけました。Qtではできなかったので、win32ハックを使いました。
これを QWidget クラスのコンストラクターに追加します。

if sys.platform == 'win32':
  import win32api
  win32api.SetClassLong(eval(self.winId().__hex__()), -26, 0x0008 | 0x00020000)

実際に CS_DROPSHADOW スタイルをウィンドウ クラス スタイルに追加しました。

于 2013-10-14T13:36:34.697 に答える
1

次のユーザーが Qt.ToolTip フラグを使用し、ツールチップが常に一番上に表示されないようにすることが役立つ場合があります。

Python コード

self.setWindowFlags(self.windowFlags() | Qt.ToolTip)
self.setWindowFlags(self.windowFlags() & ~Qt.WindowStaysOnTopHint)
于 2015-11-27T08:41:00.450 に答える