2017-11-08 17 views
0

QtQuick 응용 프로그램이 있습니다. 사용자가 응용 프로그램을 닫으려고 할 때 "Are you sure?" 팝업 창이 나타납니다.QML : 신청 닫기 전에 확인 요청

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 
    return app.exec(); 
} 

그리고 내 주요 QML 클래스를 어플리케이션 윈도우가 있습니다 :

내 주요 C++ 클래스는이

ApplicationWindow { 
    id: root 
    ... 
} 

와는 어떻게 close 이벤트를 잡을 것입니까? closeEvent()를 QMainWindow 메쏘드 또는 다른 것으로부터 오버라이드 (overriding)하는 법을 읽었지만, QMainWindow가 없으며 어디에서 그 코드를 넣을지 모른다.

그래서 저는 앱이 닫히지 않고 대신 다른 일이 발생하는 것을 알고 싶습니다. 나중에 사용자가 확인 대화 상자에서 "확인"을 클릭 할 때 앱을 닫을 방법을 알고 싶습니다.

지금까지 내가 볼 수 있듯이, ApplicationWindow의 "onClosing는"나만 일부는 피할 가까이하기 전에 청소를 수행 할 수 있지만,이 근처를 방지하지 않습니다 (내가 틀렸다면 수정하시기 바랍니다)

+0

멋지다고 생각합니다. 하지만 해결책은 의문의 여지가 없습니다. 너무 잘 정리 된 모든 것을 유지하고 질문을 수정하고 솔루션을 다시 제거한 다음 ** 답변으로 게시하십시오 **. 그런 다음 가능한 한 빨리 답변을 올바른 것으로 표시하십시오. 그러면 그 대답을 찾는 사람들은 언뜻보기에이 질문에 ** ** 대답을 볼 수 있습니다. 다른 한편으로는 도움을 청하는 사람들은 모든 것이 잘되고, 신경 쓸 필요가 없다는 것을 알고 있습니다. 고맙습니다! – derM

답변

0

나는 그것을 해결했다.

ApplicationWindow { 
    id: root 
    onClosing: close.accepted = false 
} 

이렇게하면 앱이 종료되지 않습니다.

root.close() 

앱을 종료합니다.