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.
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>
Dieser Handler gibt die Nachrichten an stderr aus, aber Sie können stderr durch einen Dateistream ersetzen, um die Ausgabe umzuleiten.
An Installieren Sie den benutzerdefinierten Handler, rufen Sie qInstallMessageHandler() in Ihrer main()-Funktion auf:
<code class="cpp">qInstallMessageHandler(myMessageOutput);</code>
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!