状況:ボーダーレスQDialogは他のアプリケーションの上に正常に留まります。アプリケーションのアクティベーションを避け、ボタンをクリックしたときにフォーカスを当てる - Windows APIまたはQt
問題は、この最前面のアプリケーションウィンドウをクリックすると、次のことが発生している:
- ザ・が常に最前面のアプリケーションが
- クリック常に最前面のアプリケーションを起動しますクリックウィンドウには、可能性がある前のアクティブ/集中アプリ
の焦点を盗み、この最前面非アクティブにし、焦点の合っていないアプリケーションのウィンドウをクリックすると、その
- 現在のアプリケーションは、常時オンのアプリケーション(ボタンやドロップダウンメニューを押しながらウィンドウをドラッグ)とやりとりできている間に、アクティブ化とフォーカスを失いません。
私はQtを使用していますが、ネイティブWindows APIの使用については問題ありません。
私は、次のQt windowFlagを試してみました:
Qt::WindowDoesNotAcceptFocus
が、それは動作しません:最前面のアプリケーションは、アクティブに焦点を当てています。Qt::WindowTransparentForInput
のように、常時オンのアプリケーションはクリックに対して透過的です。アクティブではなく、フォーカスが当たっていませんが、ヒットするとボタンは残念ながら起動しません。
ええと、どうしてQtでこれをやっていますか? 'winEvents'をオーバーライドしますか? – swdev
'showEvent()'をオーバーライドできます。その実装のためには、まず上記のコードを親メソッドと呼んでください。 – Derek
Not successful :) 'showEvent()'をオーバーライドして、PyWinライブラリを使ってコードをPyQtに移植したところ、すでに成功していますが、私がメインウィンドウが非アクティブになることを想定してコントロールをクリックすると、何か案が? – swdev