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)的主要内容,如果未能解决你的问题,请参考以下文章
Qt错误:QMessageBox: No such file or directory错误:'QsqlDatabase' has not been declared