本页内容

QErrorMessage Class

QErrorMessage 类提供了一个用于显示错误消息的对话框。更多内容...

头文件: #include <QErrorMessage>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QDialog

公共函数

QErrorMessage(QWidget *parent = nullptr)
virtual ~QErrorMessage()

公共槽

void showMessage(const QString &message)
void showMessage(const QString &message, const QString &type)

静态公共成员

QErrorMessage *qtHandler()

重新实现的受保护函数

virtual void changeEvent(QEvent *e) override
virtual void done(int a) override

详细说明

错误消息控件由一个文本标签和一个复选框组成。该复选框允许用户控制未来是否再次显示同一条错误消息,通常会显示“再次显示此消息”的文本,并翻译成相应的本地语言。

对于生产环境中的应用程序,该类可用于显示用户只需查看一次的消息。要以这种方式使用 QErrorMessage,请按常规方式创建对话框,并通过调用showMessage() 槽或将其与信号连接来显示该对话框。

静态函数qtHandler() 通过qInstallMessageHandler() 安装消息处理程序,并创建一个 QErrorMessage 对象,该对象负责显示qDebug()、qWarning() 和qFatal() 消息。这在无法使用控制台显示警告和错误消息的环境中最为有用。

在这两种情况下,QErrorMessage 都会将待显示的消息排队并按顺序显示,每当用户确认上一条消息后,新消息就会立即显示。一旦用户指定某条消息不再显示,该消息就会被自动跳过,对话框将显示队列中下一条相应的消息。

“标准对话框”示例展示了如何使用 QErrorMessage 以及其他内置的 Qt 对话框。

显示网络相关错误消息的对话框

另请参阅 QMessageBox 、QStatusBar::showMessage() 以及“标准对话框”示例。

成员函数文档

[explicit] QErrorMessage::QErrorMessage(QWidget *parent = nullptr)

根据给定的parent 创建并安装一个错误处理程序窗口。

该对话框的默认window modality 取决于平台。可在调用showMessage()之前,通过setWindowModality()重写窗口的模态性。

[virtual noexcept] QErrorMessage::~QErrorMessage()

关闭错误消息对话框。

[override virtual protected] void QErrorMessage::changeEvent(QEvent *e)

重写了:QWidget::changeEvent(QEvent *event)。

[override virtual protected] void QErrorMessage::done(int a)

重新实现了:QDialog::done(int r)。

[static] QErrorMessage *QErrorMessage::qtHandler()

返回一个指向QErrorMessage 对象的指针,该对象用于输出默认的Qt消息。如果尚未存在此类对象,该函数会创建一个。

该对象仅会输出QLoggingCategory::defaultCategory() 的日志消息。

该对象将把所有消息转发给原始的消息处理程序。

另请参阅 qInstallMessageHandler 。

[slot] void QErrorMessage::showMessage(const QString &message)

显示给定的消息message ,并立即返回。如果用户已请求不再显示该消息,则此函数不执行任何操作。

通常情况下,该消息会立即显示。但是,如果存在待处理的消息,该消息将被排队,稍后显示。

注意:此 插槽被重载了。要连接到此插槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        errorMessage, qOverload(&QErrorMessage::showMessage));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        errorMessage, [receiver = errorMessage](const QString &message) { receiver->showMessage(message); });
有关更多示例和方法,请参阅“连接到重载槽”。

[slot] void QErrorMessage::showMessage(const QString &message, const QString &type)

显示给定的消息message ,并立即返回。如果用户已请求不再显示类型为type 的消息,则此函数不执行任何操作。

通常情况下,消息会立即显示。但是,如果存在待处理的消息,该消息将被排入队列,稍后显示。

注意:此 插槽已被重载。要连接到此插槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        errorMessage, qOverload(&QErrorMessage::showMessage));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        errorMessage, [receiver = errorMessage](const QString &message, const QString &type) { receiver->showMessage(message, type); });
有关更多示例和方法,请参阅“连接到重载的槽”。

另请参阅 ` showMessage()`。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.