Рассмотрите окно QWidget, какое событие вызывается, когда мышь покинула это окно?Как проверить, действительно ли мышь оставила QWidget?
В окне есть поля QLineEdit, и у них есть дополнения (QCompleter) для ввода предложений. Фактическая цель состоит в том, чтобы сделать такой (открытый) дополняющий элемент исчезающим, когда мышь покидает окно. Это происходит главным образом из-за того, что в некоторых средах перемещение мыши по другому окну может фокусироваться на этом другом окне, но события клавиатуры по-прежнему отправляются в поле QLineEdit (даже если его родительское окно больше не сфокусировано), что сбивает с толку.
Я мог бы реализовать QWidget :: leaveEvent (событие QEvent *) (в окне), найти отображаемое в данный момент полное всплывающее окно и скрыть его, которое закрывает всплывающее окно. Но по иронии судьбы, leaveEvent() также срабатывает, когда мышь перемещается по этому всплывающему окну, скрывая его (что делает невозможным щелчок по элементу в этом всплывающем окне). Думаю, это имеет смысл, потому что всплывающее окно - это другой QWidget, хотя всплывающее окно косвенно принадлежит окну.
Так как я могу проверить, действительно ли мышь покинула окно QWidget?
'leaveEvent' не является сигналом, может быть, вы хотели реализовать или вызвать функцию проверки внутри' leaveEvent'? – Serge
О, вы правы, не знаете, что там было в моей голове. Да, так что в основном отфильтровывайте обратные вызовы, чтобы оставитьEvent в начале вашей reitplementation leaveEvent, а затем очистите всплывающее окно. – Atlante45