即使在MainWindow关闭后,Qt app也会保留在内存中

时间:2012-01-11 21:15:47

标签: qt quit qextserialport

问题如下:如果应用程序在没有主动执行任何操作时关闭,则会正确退出。但是,如果它正在积极处理某些事情(例如,等待一段时间循环),则主窗口将关闭,但程序将继续在后台运行,如打开任务管理器所确认的那样。

我今天花了大量时间来搜索问题并实施可能的修复,但无济于事。似乎quit()函数根本不做任何事情。以下是我尝试过的一些事情:

  • 使用app.connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));。我知道信号已被触发,因为我尝试将&app, SLOT(quit())更改为qApp, SLOT(aboutQt())并暂时弹出aboutQt窗口。
  • 在从主窗口按钮运行的函数的开头包含qApp->quit();。应用程序确实运行到该行,但它没有效果。
  • 使用processEvents()确保GUI正在更新。
  • 在main.cpp中包含mainWindow.setAttribute(Qt::WA_QuitOnClose);等语句。

我只是希望应用程序在主窗口关闭时完全退出。

我正在使用qextserialport库,如果这有任何区别的话。

1 个答案:

答案 0 :(得分:1)

我不知道什么是错的,但是当您的插槽实际收到信号时,您可以从该插槽功能中调用exit()作为解决方法。