【发布时间】:2016-03-24 09:09:51
【问题描述】:
我正在使用Qt5.5并编写了一个应用程序,如果在应用程序启动过程中遇到错误,我想使用QErrorMessage来显示错误。
我已添加:
QErrorMessage errmsg(this);
errmsg.showMessage("HELLO WORLD");
这段代码已经插入到我的主窗口构造函数的末尾,什么都没有显示,为什么?
【问题讨论】:
我正在使用Qt5.5并编写了一个应用程序,如果在应用程序启动过程中遇到错误,我想使用QErrorMessage来显示错误。
我已添加:
QErrorMessage errmsg(this);
errmsg.showMessage("HELLO WORLD");
这段代码已经插入到我的主窗口构造函数的末尾,什么都没有显示,为什么?
【问题讨论】:
在您可以阅读的文档中:
显示给定的消息,消息,并立即返回。如果用户 已请求不再显示该消息,此功能 什么都不做。
这意味着,一旦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 来执行此操作。这是一个阻塞调用,将等待用户关闭对话框。