私は PySide で Qt を使用して Python でプログラミングしており、Qt Designer のプロモーション メソッドを使用して windowUi.py の UI に挿入された editor.py というファイルでカスタム QWidget を定義しています。
editor.py で定義されたカスタム QWidget クラスは、Elixir を使用して sqlite3 データベース内のアイテムを編集し、ui ファイル (editor.ui) をインポートする以外にはあまり機能しません。editor.ui 内には、いくつかの QLineEdits ウィジェットと QDateTime ウィジェットがあります。
このウィジェットは、最初はメイン ウィンドウに表示されず、必要に応じて表示されます。ここまではいいのですが、必要のないときに非表示にできないのが問題です。ユーザーがインポートされたエディター ウィジェットではないメイン ウィンドウの他の場所をクリックした場合、つまり、QWidget からフォーカスが移動した場合、ウィジェットは必要ないと判断しました。
私はこの質問を見ました: QWidget focusOutEvent が受信されず、QWidget が実際にフォーカスされていないことに気付きました。
その上で setFocusPolicy(StrongFocus) を呼び出すと、ユーザーが QWidget の背景 (内部のウィジェットではなく) をクリックし、外側をクリックした場合にのみ非表示にすることができます。
問題は、ユーザーがこのウィジェットの外側をクリックして、その内側にある QLineEdit または QDateTime から別のものにフォーカスを移したときに、QWidget が非表示になるようにするにはどうすればよいかということです。