2013-09-26 2 views
0

닫기 이벤트를 처리하는 Qt 양식을 만들었습니다. 다른 클래스 (Test 클래스)에서는이 폼의 인스턴스를 만들고 "Test"클래스에서 폼의 close 이벤트를 처리하려고합니다.CloseEvent 인스턴스 클래스의 Qt

"테스트"클래스에서 다음 코드를 사용했지만 작동하지 않는 것 같습니다.

connect(instanceWidget, SIGNAL(closeEvent(QCloseEvent *)), this, SLOT(handleFormCloseEvent(QCloseEvent *))); 

참고 instanceWidget는 테스트 클래스에서 Qt는 양식의 인스턴스입니다.

답변

0

내 용액 - 폼/UI 클래스

핸들으로 onClose 이벤트와 다음 코드 주입 -

는 (으로 onClose를 방출)를; event-> accept;

신호 추가 OnClose();

인스턴스화 된 (테스트 클래스)에서 OnClose에 대한 신호와 슬롯을 만들고 사용자 정의 기능을 제공하십시오.

- 닫는 양식은 onclose 신호를 내고 테스트 클래스에서 처리하는 UI의 닫기 이벤트 처리기를 호출합니다. 그런 다음 클래스를 폼으로 반환하고 폼을 닫습니다.

0

closeEvent과 같은 이벤트 처리기 메서드는 신호가 아니므로 연결할 수 없습니다.

이벤트 처리는 다음과 같이 진행한다 :

  1. 이벤트 루프는 큐로부터 소정의 개체에 대한 이벤트를 얻는다.

  2. object->event(...)을 호출하여 개체에 알립니다.

  3. 이 메서드는 QWidget에 다시 구현되고 관련 특정 이벤트 처리기를 호출합니다. 이 경우 closeEvent()이 호출됩니다.

신호/슬롯이 관련되지 않습니다.

다른 개체의 이벤트 (QWidgetQObject)를 처리하려면 install an event filter on them이어야합니다. 이벤트 필터는 관심있는 이벤트에 반응하고 다른 이벤트는 전달합니다.