Qt 5.1 - QMessageBox Bug?如果在隐藏QDialog时调用QMessageBox,则程序退出(0)

rwx*_*rwx 2 c++ qt

我似乎发现了Qt 5.1的烦人问题

比方说,你有一个系统托盘图标(QSystemTrayIcon),你隐藏你的表格(QDialog)

this->hide();
Run Code Online (Sandbox Code Playgroud)

然后在隐藏表单时,您的应用会显示一个消息框:

QMessageBox::information(0, "Test", "Test");
Run Code Online (Sandbox Code Playgroud)

一旦用户点击确定关闭对话框,程序将以退出代码0退出.因此它不会崩溃,但它会礼貌地退出.

我所知道的唯一解决方法是在Windows上使用WIN32 API和MessageBox函数.这不是我想要做的.

这是一个错误吗?

Rom*_*rev 7

默认情况下,Qt应用程序在最后一个窗口关闭时关闭(在您的情况下,关闭时QMessageBox).

您可以添加此代码以使应用程序保持运行:

qApp()->setQuitOnLastWindowClosed(false);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很有效.qApp-> setQuitOnLastWindowClosed(假); (2认同)