功能:把控制台的程序输出到文本文件,同时保留在控制台显示
#include <QApplication>
#include "qmlapplicationviewer.h"
#include "QtDebug"
#include <QFile>
#include <QTextStream>
#include <iostream>
#include <QDateTime>
using namespace std;
void customMessageHandler( QtMsgType type, const char *msg)
{
QString txt;
switch (type)
{
case QtDebugMsg:
txt = QString("Debug: %1").arg(msg);
break;
case QtWarningMsg:
txt = QString("Warning: %1").arg(msg);
break;
case QtCriticalMsg:
txt = QString("Critical: %1").arg(msg);
break;
case QtFatalMsg:
txt = QString("Fatal: %1").arg(msg);
abort();
}
QFile outFile("debuglog.txt");
outFile.open(QIODevice::WriteOnly | QIODevice::Append|QIODevice::Text);
QTextStream ts(&outFile);
ts << txt << endl;
//输出到控制台
QDateTime now = QDateTime::currentDateTime();
cout << now.toString("hh:mm:ss.zzz").toStdString() << " "<< txt.toStdString() <<endl;
}
Q_DECL_EXPORT int main(int argc, char *argv[])
{
//在程序开始前添加
qInstallMsgHandler(customMessageHandler);
QScopedPointer<QApplication> app(createApplication(argc, argv));
qDebug() << "app is run";
QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/qt48Deploy/main.qml"));
viewer.showExpanded();
return app->exec();
}
参考:
在Qt助手中也有讲解
http://www.developer.nokia.com/Community/Wiki/How_to_redirect_qDebug_output_to_a_file