Qt5.5 为啥不显示错误信息?

Posted

技术标签:

【中文标题】Qt5.5 为啥不显示错误信息?【英文标题】:Qt5.5 why isn't error message displayed?Qt5.5 为什么不显示错误信息? 【发布时间】:2016-03-24 09:09:51 【问题描述】:

我正在使用Qt5.5并编写了一个应用程序,如果在应用程序启动过程中遇到错误,我想使用QErrorMessage来显示错误。

我已添加:

    QErrorMessage errmsg(this);
    errmsg.showMessage("HELLO WORLD");

这段代码已经插入到我的主窗口构造函数的末尾,什么都没有显示,为什么?

【问题讨论】:

【参考方案1】:

在您可以阅读的文档中:

显示给定的消息,消息,并立即返回。如果用户 已请求不再显示该消息,此功能 什么都不做。

这意味着,一旦errmsg 被销毁,就不能再显示任何消息。您必须使用 QErrorMessage 类作为成员/全局变量:

this->errmsg = new QErrorMessage(this);
this->errmgs->showMessage("HELLO WORLD");

或者,您可以使用QErrorMessage::qtHandler() - 这将返回错误消息处理程序的全局实例:

QErrorMessage::qtHandler()->showMessage("HELLO WORLD");

但如果你这样做,请注意 QDebug 也会使用这个:

静态 qtHandler() 函数使用 qInstallMessageHandler() 并创建一个 QErrorMessage 显示 qDebug()、qWarning() 和 qFatal() 消息。这是最有用的 没有控制台可用于显示警告和 错误消息。

【讨论】:

谢谢,可能是因为我的应用程序正在终止,我想向用户显示一条消息,因为启动过程中出现问题,应用程序无法运行。如果应用程序死了,这会阻止显示错误消息吗? 是的,会的。您必须使用QMessageBox::critical 来执行此操作。这是一个阻塞调用,将等待用户关闭对话框。

以上是关于Qt5.5 为啥不显示错误信息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥会出现以下错误:“尝试附加到数据库失败,并显示以下信息:用户 'x\x' 登录失败。?

为啥intellij idea不能显示错误信息

为啥我的贝宝 api 调用失败并出现错误版本不支持?

为啥电脑开机总是显示错误127

linux错误提示为啥显示菱形???求高手详解,有些英文显示不出来,显示出来是菱形,

Delphi调试器窗口中为啥变量内容显示不全