2012-11-16 2 views
3

나는 로그인 대화 상자의 .H 파일에 closeEvent 기능을 재정의 :QCloseEvent로 프로그램을 종료하는 방법은 무엇입니까? 이 프로그램을 종료하도록 방출 할 때

void closeEvent(QCloseEvent *event){exit(0)} 

그러나, 내가 클릭 대화 상자에서 어떤 버튼 프로그램을 종료 할 것 같다. 오른쪽 상단의 'x'버튼을 클릭 할 때만 어떻게 종료 할 수 있습니까?

+0

로그인 창이 유일한 창입니까? 그런 다음 QApplication의 quitOnLastWindowClosed가 작업을 수행해야합니다. 하지만 기본적으로 사실이므로 다른 설정이있는 것 같습니다. –

+0

메인 윈도우에서'close()'를 호출해야합니다. – Ruu

답변

5

대화 상자를 닫을 때 closeEvent()가 호출됩니다. 분명히 대화 상자의 "확인"또는 "취소"버튼을 클릭하면 닫고 싶습니다. 이것은 정상입니다.

또한 closeEvent()에 전달 된 이벤트는 수락되거나 무시되어야합니다. 응용 프로그램을 종료하면 안됩니다(). 예를 들면 다음과 같습니다.

창이 닫히는 이유는 중요하지 않습니다. 사용자가 창 프레임에서 "확인"또는 "취소"또는 "X"단추를 클릭했는지 여부 당신은 말할 수 없습니다. 가까운 이벤트가 바로 그것입니다. 창을 닫으 려합니다.

대화 상자가 열려있는 마지막 창이면 QApplication :: exec()가 반환되고 프로그램이 정상적으로 종료됩니다.

관련 문제