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