2010-12-07 3 views
4

내 응용 프로그램이 닫히기 전에 일부 작업을 수행해야합니다. 내 응용 프로그램은 이 아니며 기본 창은입니다. 신청 마감 이벤트가 있습니까? 아니면이를 수행 할 다른 방법이 있습니까?Qt - 응용 프로그램의 닫기 이벤트를 차단하는 방법 (있는 경우)

메인 윈도우의 닫기 이벤트에 의존 할 수없는 이유는 내 응용 프로그램이 시스템 트레이 아이콘을 남기고 백그라운드에서 실행된다는 것입니다.

답변

8

귀하의 응용 프로그램은 QApplication에서 파생되었을 가능성이 큽니다. exec()를 호출 한 후

int main(int argc, char *argv[]) { 
    MyApp a(argc, argv); 
    return a.exec(); 
} 

당신은 작업을 수행 할 수 있습니다 : 당신은 아마 이런 일이, 당신의 main()에,

class MyApp: public QApplication { 
public: 
    ~MyApp() { 
     // cleanup code here 
    } 
}; 

또는 : 당신은 응용 프로그램의 소멸자에 정리 코드를 삽입 할 수

인터넷은 aboutToQuit 전화 ( QApplication 상속) QCoreApplication로부터 신호가
int main(int argc, char *argv[]) { 
    MyApp a(argc, argv); 
    int r = a.exec(); 
    // cleanup code here 
    return r; 
} 
+0

두 번째 옵션을 시도해 보겠습니다. 그러면 OS에 "다음 응용 프로그램이 종료를 차단하고 있습니다"라는 메시지가 표시됩니까? – Raphael

+0

@Raphael : (예를 들어, 외부 서버에 접속하는 것과 같이) 시간이 걸리는 작업을하려고하지 않는 한 괜찮을 것입니다. –

+0

파일에 기록하는 것은 어떻습니까? Sqlite 파일처럼? – Raphael

16

응용 프로그램이 종료되기 직전 빨간색

+0

일부 액티비티가 실행 중일 때 앱을 닫지 못하게하려면 어떻게해야합니까? – prakashpun

+0

@ pra16 적절한 질문으로 질문해야합니다. – sje397

관련 문제