How do I use qDebug in a Qt console application to output to the Qt Creator "application output" window? Currently qDebug writes to the console window which interferes with the non-debug output.
Using qDebug in a Qt GUI app outputs to application output window by default.
You can either output everything to console or everything to Qt Creator's Application Output panel.
For sake of completeness: If you want to have all the output in the panel instead of console you can uncheck "Run in terminal" in Project->Run settings.
To redirect QDebug to multiple places, you might have to write some code, maybe like this:
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);
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With