qt c ++ после закрытия окна, завершающего поток / программу - PullRequest
2 голосов
/ 29 июня 2010

я получил это главное;

#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);

и я выбрал файл, который завершает другой поток / программу.

как зафиксировать?

1 Ответ

2 голосов
/ 29 июня 2010

Я не знаю (и не могу догадаться), какой у вас класс Tray.

Однако Qt обычно завершает программу, когда закрывается последнее отображаемое окно (экземпляр QWidget). Если не указано иное .

Если 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...