2010-06-29 6 views
2

이 메인이 있습니다.qt C++ 닫기 창 종료 후 스레드/프로그램

#include <QtGui> 
#include <iostream> 
using namespace std; 
#include "tray.h" 

void main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    Tray iets; 
    app.exec(); 
} 

내가 트레이에서 열 때;

QFileDialog *dialog = new QFileDialog; 
QString dir; 

QString test = dialog->getOpenFileName(NULL, NULL, NULL, "Battlefield (*.exe)", NULL, NULL); 
for(int i=0; i<test.split("/").size()-1; i++) 
    dir+= test.split("/").at(i) + "/"; 
ui->lePath->setText(test); 

그리고 나는 다른 스레드/프로그램을 종결하는 파일을 선택했다.

어떻게 해결할 수 있습니까?

+0

'Tray' 클래스의 정의를 제공해주십시오. – ereOn

답변

2

귀하의 Tray 클래스가 무엇인지 알지 못합니다.

그러나 일반적으로 Qt은 마지막으로 표시된 창 (QWidget 인스턴스)이 닫힐 때 프로그램을 종료합니다. specified otherwise.

Tray이 창 (하위 클래스 QWidget)이 아닌 경우 app.exec()은 처리 할 메시지 루프가 없으므로 즉시 종료되어 프로그램을 종료합니다.

당신은 당신의 프로그램이이 시점에서 정확히 무엇을 기대합니까?


하지 직접 관련이 있지만, 여전히 중요 :

귀하의 main() 기능 정말 종료 상태를 반환해야합니다. 다음과 같이 간단하게 main()을 변경할 수 있습니다.

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    Tray iets; 
    return app.exec(); // app.exec() returns an exit status. 
}