Heim > Backend-Entwicklung > C++ > Wie kann ich die QDebug-, QWarning- und QCritical-Ausgabe in Qt umleiten?

Wie kann ich die QDebug-, QWarning- und QCritical-Ausgabe in Qt umleiten?

DDD
Freigeben: 2024-11-04 12:09:29
Original
797 Leute haben es durchsucht

How can I redirect QDebug, QWarning, and QCritical output in Qt?

Umleiten von QDebug-, QWarning- und QCritical-Ausgaben

In Qt werden Debugging-Informationen häufig mithilfe von qDebug() und anderen ähnlichen Anweisungen an die Konsole ausgegeben. Es kann sinnvoll sein, diese Ausgabe stattdessen in eine Datei umzuleiten, insbesondere für die plattformübergreifende Entwicklung. Dies vermeidet die Verwendung von Shell-Skripten und bietet eine konsistentere Lösung.

Benutzerdefinierter Nachrichtenhandler

Um die Debug-Ausgabe umzuleiten, stellt Qt die Funktion qInstallMessageHandler() bereit. Dadurch können Sie einen benutzerdefinierten Nachrichtenhandler installieren, der die Nachrichten verarbeitet, bevor sie gedruckt werden. Hier ist ein Beispiel-Handler:

<code class="cpp">void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QByteArray localMsg = msg.toLocal8Bit();
    switch (type) {
    case QtDebugMsg:
        fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtInfoMsg:
        // ...
    case QtWarningMsg:
        // ...
    case QtCriticalMsg:
        // ...
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        abort();
    }
}</code>
Nach dem Login kopieren

Dieser Handler gibt die Nachrichten an stderr aus, aber Sie können stderr durch einen Dateistream ersetzen, um die Ausgabe umzuleiten.

Installation

An Installieren Sie den benutzerdefinierten Handler, rufen Sie qInstallMessageHandler() in Ihrer main()-Funktion auf:

<code class="cpp">qInstallMessageHandler(myMessageOutput);</code>
Nach dem Login kopieren

Nach der Installation, Alle qDebug- und ähnlichen Nachrichten werden an den Handler umgeleitet und in die von Ihnen angegebene Datei oder den angegebenen Stream geschrieben.

Das obige ist der detaillierte Inhalt vonWie kann ich die QDebug-, QWarning- und QCritical-Ausgabe in Qt umleiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage