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

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

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

this->hide();

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

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

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

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

这是一个错误吗?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

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

    qApp()->setQuitOnLastWindowClosed(false);
    

    【讨论】:

    • 谢谢你,成功了。 qApp->setQuitOnLastWindowClosed(false);
    • 也许这适用于主窗口,但从对话窗口生成的QMessageBox 仍将关闭它。可能是其他原因造成的,但效果是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多