QWidget 창을 고려해보십시오. 마우스가이 창에서 나왔을 때 어떤 이벤트가 트리거됩니까?마우스가 실제로 QWidget을 떠났는 지 확인하는 방법은 무엇입니까?
창에 QLineEdit 필드가 있으며 입력 제안 사항에 대한 완성 자 (QCompleter)가 있습니다. 실제 목표는 마우스가 창을 떠날 때 그러한 (열린) 완성자를 사라지게 만드는 것입니다. 일부 환경에서는 마우스를 다른 창 위로 이동하면 다른 창에 포커스가있을 수 있지만 키보드 이벤트는 여전히 QLineEdit 필드로 보내지므로 (부모 창에 더 이상 집중하지 않아도) 혼란 스럽습니다.
QWidget :: leaveEvent (QEvent * 이벤트)를 (윈도우에서) 구현하고 현재 표시된 완성 자 팝업을 찾아 숨겨서 팝업을 닫을 수 있습니다. 그러나 역설적이게도 leaveEvent()는 마우스를 팝업 위로 이동하면 숨겨집니다 (팝업에서 항목을 클릭 할 수 없게됩니다). 윈도우가 팝업을 간접적으로 소유하고 있어도 팝업이 다른 QWidget이기 때문에 의미가 있다고 생각합니다.
그렇다면 마우스가 실제로 QWidget 창을 벗어 났는지 어떻게 확인합니까?
'leaveEvent'는 신호가 아닙니다. 어쩌면 당신은'leaveEvent' 내부에서 검사 기능을 구현하거나 호출 할 수 있습니까? – Serge
아, 네가 맞아, 내 머리에 무슨 일이 일어나고 있는지 잘 모르겠다. 네, 기본적으로 leaveEvent에 대한 콜백을 필터링하고 leaveEvent를 다시 구현 한 다음 팝업을 정리합니다. – Atlante45