如何在Qt控制檯應用程序中使用qDebug輸出到Qt Creator「應用程序輸出」窗口?目前qDebug寫入控制檯窗口乾擾非調試輸出。qDebug Qt控制檯應用程序輸出到Qt Creator應用程序輸出
在qt GUI應用程序中使用qDebug默認輸出到應用程序輸出窗口。
如何在Qt控制檯應用程序中使用qDebug輸出到Qt Creator「應用程序輸出」窗口?目前qDebug寫入控制檯窗口乾擾非調試輸出。qDebug Qt控制檯應用程序輸出到Qt Creator應用程序輸出
在qt GUI應用程序中使用qDebug默認輸出到應用程序輸出窗口。
要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);
...
}
您可以輸出一切控制檯或一切Qt Creator中的應用程序輸出面板。
爲了完整起見:如果您想要在面板而不是控制檯中輸出所有輸出,可以在Project-> Run settings中取消選中「在終端中運行」。
此代碼不起作用。不知道是否因爲代碼示例中的拼寫錯誤(其中似乎至少有一個)或者因爲Qt自2013年以來已取得進展,並且答案使用了不推薦的調用。 – 2017-04-08 10:17:24