2011-01-17 3 views
0

맞춤 위젯이 포함 된 컨트롤과 같은 팝업 메뉴를 만들려고합니다. 마우스를 캡처해야하지만, 위젯의 자식에게 마우스 메시지가 계속 표시되도록해야합니다. grabMouse은 자식이 아닌 마우스를 움켜 잡은 위젯에만 이벤트를 보냅니다.모든 어린이를위한 Qt 팝업 grabMouse

팝업은 단순히 일련의 버튼 (QGridLayout 사용)입니다. 컨트롤은 사용자가 마우스 오른쪽 버튼을 누르고 팝업이 나타나면 항목으로 이동하고 마우스 버튼을 놓는 방식으로 작동해야합니다. 최적으로 그것은 QMenu 팝업과 똑같이 작동하지만 사용자 정의 위젯과 사용자 정의 레이아웃이 있습니다.

어떻게하면됩니까?

답변

0

간단히 말해서 속성 Qt::Popup을 지정하면 기본 동작을 얻는 데 충분합니다.

모든 어린이에게 이벤트 필터를 설치해야합니다. 모든 마우스 이벤트, enter/leave/hover 이벤트를 캡처해야합니다. QT는 grabMouse에 결함이 있으므로 작동하지 않습니다. 예상되는 동작을 얻으려면 필터를 사용해야합니다.

+0

물론 이것은 AbstractButon과 같은 표준 컨트롤이 의도 한대로 작동하지 않기 때문에 완전한 대답은 아닙니다. 그들은 mouseDown을 시작하지 않았으므로 버튼을 클릭하지 않습니다. –

관련 문제