Как правильно закрыть программу Qt?



Когда я пытаюсь закрыть свою программу Qt, она просто продолжает работать в фоновом режиме, хотя окна больше нет.



В принципе, я хотел бы знать, что я должен сделать, чтобы он закрывался правильно, когда я нажимаю Красный крест на моем главном окне (у которого нет родителя).



Перейдя по этой ссылке , я попробовал несколько вещей, таких как:



QApplication app(argc, argv);
//...
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
return app.exec();


Или



QApplication app(argc, argv);
//...
app.setQuitOnLastWindowClosed(true);
return app.exec();


Но ни то, ни другое не работает, процесс все еще остается в памяти, после того, как крестик нажат.



Тогда, как я могу закрыть правильно моя программа ?

522   1  

1 ответ:

Вы можете закрыть приложение вручную, используя QApplication::quit().

По умолчанию выполнение завершается после закрытия последнего окна верхнего уровня с атрибутом Qt::WA_QuitOnClose. Вам не нужно подключать lastWindowClosed к quit, потому что он повторяет поведение по умолчанию setQuitOnLastWindowClosed. Вам также не нужно делать setQuitOnLastWindowClosed(true), потому что это верно по умолчанию. Код, который вы опубликовали, ничего не делает (если ничего не изменилось где-то еще).

Возможные решения:

  • Проверьте атрибуты главного окна. Возможно, вы удалили атрибут Qt::WA_QuitOnClose.
  • Если вы повторно реализовали closeEvent в окне верхнего уровня, проверьте, что событие close принимается.
  • проверьте, есть ли другие виджеты верхнего уровня, которые могут быть скрыты, но не закрыты. Используйте QApplication::topLevelWidgets() для их перечисления.

Comments

    Ничего не найдено.