Приложение Qt остается в памяти даже после закрытия MainWindow - PullRequest
6 голосов
/ 12 января 2012

Проблема заключается в следующем: если приложение закрыто, когда оно ничего не делает, оно корректно завершает работу. Если он активно работает над чем-то (например, ожидает в цикле while), главное окно закроется, но программа продолжит работать в фоновом режиме, что подтверждается открытием диспетчера задач.

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

  • Использование app.connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));. Я знаю, что сигнал сработал, потому что я попытался изменить &app, SLOT(quit()) на qApp, SLOT(aboutQt()), и окно aboutQt ненадолго появилось.
  • Включая qApp->quit(); в начале функции, которая запускается из кнопки главного окна. Приложение запускается до этой строки, но это не имеет никакого эффекта.
  • Использование processEvents() для проверки обновления графического интерфейса.
  • Включая такие выражения, как mainWindow.setAttribute(Qt::WA_QuitOnClose); в main.cpp.

Я просто хочу, чтобы приложение полностью закрывалось при закрытии главного окна.

Я использую библиотеку qextserialport, если это что-то меняет.

1 Ответ

1 голос
/ 12 января 2012

Я не знаю, что не так, но, поскольку ваш слот фактически получает сигнал, вы можете вызвать exit() из этой функции слота в качестве обходного пути.

...