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

4

我发现了一个与Qt 5.1相关的令人烦恼的问题。

举个例子,如果你有一个系统托盘图标(QSystemTrayIcon),并隐藏了你的窗体(QDialog),那么:

this->hide();

然后,当表单被隐藏时,你的应用程序会显示一个消息框。
QMessageBox::information(0, "Test", "Test");

当用户点击“确定”关闭对话框后,程序将以退出代码0退出。因此,它不会崩溃,而是礼貌地退出。

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

这是一个bug吗?

1个回答

9

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

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

qApp()->setQuitOnLastWindowClosed(false);

2
谢谢,这个可行。qApp->setQuitOnLastWindowClosed(false); - rwx
也许这对于主窗口有效,但是从对话框窗口生成的QMessageBox仍将关闭它。可能是其他原因导致了这种情况,但效果是相同的。 - z33k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接