6

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

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

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

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

我正在使用 qextserialport 库,如果这有什么不同的话。

4

1 回答 1

1

我不知道出了什么问题,但是当您的插槽实际接收到信号时,您可以exit()从该插槽函数调用作为一种解决方法。

于 2012-01-11T21:25:44.620 回答