如何在 Qt 控制台应用程序中使用 qDebug 输出到 Qt Creator“应用程序输出”窗口?当前 qDebug 写入控制台窗口,这会干扰非调试输出。
默认情况下,在 Qt GUI 应用程序中使用 qDebug 输出到应用程序输出窗口。
如何在 Qt 控制台应用程序中使用 qDebug 输出到 Qt Creator“应用程序输出”窗口?当前 qDebug 写入控制台窗口,这会干扰非调试输出。
默认情况下,在 Qt GUI 应用程序中使用 qDebug 输出到应用程序输出窗口。
您可以将所有内容输出到控制台,也可以将所有内容输出到 Qt Creator 的应用程序输出面板。
为了完整起见:如果您想在面板中而不是控制台中拥有所有输出,您可以在项目->运行设置中取消选中“在终端中运行”。
要将 QDebug 重定向到多个位置,您可能必须编写一些代码,可能是这样的:
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);
...
}