Мой сложный GUI состоит из множества собственных и пользовательских виджетов. Большинство из них вообще не имеют фокуса (мне это не нужно: например, некоторые виджеты только для отображения, которые не требуют ввода пользователя).Detect click outside QLineEdit
на экране Иногда появляется QLineEdit, когда GUI хочет, чтобы пользователь ввел некоторую строку (представьте себе проводник окна после нажатия клавиши F2, имеющей некоторые выбранный файл (переименование).
Я хочу, чтобы пользователь мог закрыть эту QLineEdit как много способов как можно: нажав Enter, ESC, щелкнув вне QLineEdit
- QLineEdit посылает сигнал editingFinished() в некоторых случаях (нажмите Enter, нажмите на другой виджет)
- также я могу сделать новый класс, производный от QLineEdit. который отправляет editFinished() сигнал, когда focusOutEvent (QFocusEvent *).
- В этом классе я могу поймать клавишу ESC и отправить editFinished().
Единственная проблема в том, что QLineEdit теряет фокус только в том случае, если какой-либо другой виджет принимает фокус. Поэтому, если вы нажмете на виджет, который не заботится о фокусе, QLineEdit останется с фокусом и не отправит сигнал editFinished().