2010-06-29 493 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

幫助我們來幫助您:請提供您的托盤類的定義。 – ereOn 2010-06-29 14:39:19

回答

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. 
}