Um qDebug an mehreren Orten zu umleiten, könnten Sie einen Code schreiben, vielleicht so:
QList<QtMsgHandler> messageHandlers_;
static void messageDispatcher(QtMsgType type, const char *msg)
{
foreach (QtMsgHandler callback, ::messageHandlers_)
callback(type, msg);
}
static void messageLogger(QtMsgType type, const char *msg)
{
QString output;
switch (type) {
case QtDebugMsg: output = QString("mesage: %1\n").arg(msg); break;
case QtWarningMsg: output = QString("warning: %1\n").arg(msg); break;
case QtCriticalMsg: output = QString("critical: %1\n").arg(msg); break;
case QtFatalMsg: output = QString("fatal: %1\n").arg(msg); break;
default: return;
}
QFile file("log.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Append))
QTextStream(&file) << output;
}
int main()
{
...
::messageHandlers_.append(messageLogger)
qInstallMsgHandler(messageDispatcher);
...
}
Dieser Code funktioniert nicht. Nicht sicher, ob es wegen Tippfehlern im Codebeispiel (von denen mindestens eins zu sein scheint) oder weil Qt seit 2013 fortgeschritten ist und die Antwort veraltete Aufrufe verwendet. –