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

Posted

技术标签:

【中文标题】Qt 5.1 - QMessageBox 错误?如果在隐藏 QDialog 时调用 QMessageBox,则程序退出(0)【英文标题】:Qt 5.1 - QMessageBox Bug? Program Exits(0) if QMessageBox is called while QDialog is hidden 【发布时间】:2013-12-04 08:41:59 【问题描述】:

我似乎发现了 Qt 5.1 的一个恼人问题。

假设你有一个系统托盘图标 (QSystemTrayIcon) 并且你隐藏了你的表单 (QDialog),所以:

this->hide();

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

QMessageBox::information(0, "Test", "Test");

一旦用户点击 Ok 关闭对话框,程序就会以退出代码 0 退出。因此,它不会崩溃,而是礼貌地退出。

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

这是一个错误吗?

【问题讨论】:

【参考方案1】:

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

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

qApp()->setQuitOnLastWindowClosed(false);

【讨论】:

谢谢你,成功了。 qApp->setQuitOnLastWindowClosed(false); 也许这适用于主窗口,但从对话窗口生成的QMessageBox 仍将关闭它。可能是其他原因造成的,但效果是一样的。

以上是关于Qt 5.1 - QMessageBox 错误?如果在隐藏 QDialog 时调用 QMessageBox,则程序退出(0)的主要内容,如果未能解决你的问题,请参考以下文章

QT5:QMessageBox

QT中QMessageBox的一些方式

Qt错误:QMessageBox: No such file or directory错误:'QsqlDatabase' has not been declared

Qt 5.1 qHash 错误

[Qt入门]消息对话框创建

QT中错误提示框