Класс QAbstractMessageHandler
Класс QAbstractMessageHandler предоставляет интерфейс обратного вызова для обработки сообщений. Подробнее...
| Заголовок: | #include <QAbstractMessageHandler> |
| qmake: | QT += xmlpatterns |
| С тех пор: | Qt 4.4 |
| Наследует: | QObject |
Этот класс был представлен в Qt 4.4.
Открытые функции
| QAbstractMessageHandler(QObject *parent = nullptr) | |
| виртуальный | ~QAbstractMessageHandler() |
| void | message(QtMsgType type, const QString &description, const QUrl &identifier = QUrl(), const QSourceLocation &sourceLocation = QSourceLocation()) |
Защищённые функции
| виртуальный void | handleMessage(QtMsgType type, const QString &description, const QUrl &identifier = QUrl(), const QSourceLocation &sourceLocation = QSourceLocation()) = 0 |
Подробное описание
QAbstractMessageHandler — абстрактный базовый класс, предоставляющий интерфейс обратного вызова для обработки сообщений. Например, класс QXmlQuery парсит и выполняет XQuery. При обнаружении ошибки компиляции или выполнения он генерирует соответствующее сообщение об ошибке, но вместо вывода сообщения непосредственно передает его в функцию message() своего объекта QAbstractMessageHandler. См. QXmlQuery::setMessageHandler().
Вы создаёте обработчик сообщений, наследуя от QAbstractMessageHandler и реализуя handleMessage(). Затем вы передаёте указатель на экземпляр своего подкласса в любые классы, которым необходимо генерировать сообщения. Сообщения отправляются обработчику сообщений через функцию message(), которая перенаправляет их в вашу функцию handleMessge().
Один экземпляр QAbstractMessageHandler может использоваться для обработки сообщений из нескольких источников. Поэтому содержание сообщения, которое является параметром description, передаваемым в message() и handleMessage(), необходимо интерпретировать в контексте, потребовавшем отправки сообщения. Этот контекст задаётся параметрами identifier и sourceLocation для message() и handleMessage().
Документация по функциям-членам
QAbstractMessageHandler::QAbstractMessageHandler(QObject *parent = nullptr)
Конструктор QAbstractMessageHandler. Параметр parent передаётся конструктору базового класса QObject.
[virtual] QAbstractMessageHandler::~QAbstractMessageHandler()
Деструктор данного QAbstractMessageHandler.
[pure virtual protected] void QAbstractMessageHandler::handleMessage(QtMsgType type, const QString &description, const QUrl &identifier = QUrl(), const QSourceLocation &sourceLocation = QSourceLocation())
Эта функция должна быть реализована подклассом. message() будет вызывать эту функцию, передавая её параметры type, description, identifier и sourceLocation без изменений.
Эта функция потенциально может вызываться из нескольких потоков. Именно реализация должна обеспечить безопасность потоков.
void QAbstractMessageHandler::message(QtMsgType type, const QString &description, const QUrl &identifier = QUrl(), const QSourceLocation &sourceLocation = QSourceLocation())
Отправляет сообщение этому обработчику сообщений. type — тип отправляемого сообщения. description — содержание сообщения. identifier — URI, идентифицирующий сообщение, и является ключом к интерпретации других аргументов.
Обычно этот класс используется для отчётов об ошибках, как и в случае с QXmlQuery, который использует QAbstractMessageHandler для отчётов об ошибках компиляции и выполнения XQuery. Поэтому использование QUrl в качестве идентификатора сообщения было вдохновлено объяснением обработки ошибок в языке XQuery. Поскольку identifier состоит из URI пространства имён и локальной части, идентификаторы с одинаковой локальной частью уникальны. Отправитель отвечает за обеспечение того, что identifier является либо допустимой QUrl, либо QUrl по умолчанию.
sourceLocation определяет местоположение в ресурсе (т. е. файле или документе), где было обнаружено сообщение.
Эта функция безусловно вызывает handleMessage(), передавая все её параметры без изменений.
См. также http://www.w3.org/TR/xquery/#errors.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qabstractmessagehandler.html