私の複雑な GUI は、多数のネイティブ ウィジェットとカスタム ウィジェットで構成されています。それらのほとんどにはまったくフォーカスがありません (私はそれを必要としません: たとえば、ユーザーの入力を必要としない一部の表示専用ウィジェット)。
QLineEdit
GUI がユーザーに何らかの文字列を入力するように要求しているときに、画面に表示されることがあります (F2 を押した後のウィンドウのエクスプローラーで、ファイルが選択されている (名前の変更) ことを想像してください) 。
ユーザーができるQLineEdit
限り多くの方法でこれを閉じることができるようにしたい: Enter、ESC、QLineEdit の外側をクリックする。
QLineEdit
状況によってはシグナルを送信editingFinished()
します (Enter キーを押し、別のウィジェットをクリックします)。- また、発生時にシグナル
QLineEdit
を送信する新しいクラスを派生させることもできます。editingFinished()
focusOutEvent(QFocusEvent *)
- そのクラスでは、ESC キーをキャッチして
editingFinished()
.
唯一の問題は、QLineEdit
別のウィジェットがフォーカスを取得した場合にのみフォーカスを失うことです。したがって、フォーカスを気にしないウィジェットをクリックすると、フォーカスを維持し、シグナルQLineEdit
を送信しません。editingFinished()