2012-08-02 18 views

Respuesta

2

Para redirigir QDebug a múltiples lugares, es posible que tenga que escribir código, tal como esto:

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); 
    ... 
} 
+0

Este código no funciona. No estoy seguro de si se debe a errores tipográficos en el ejemplo del código (del cual parece haber al menos uno) o porque Qt ha progresado desde 2013 y la respuesta usa llamadas en desuso. –

6

Puede salida de todo para todo consola o al panel de resultados de la aplicación de Qt Creator.

Para completar: si desea tener toda la salida en el panel en lugar de la consola, puede desmarcar "Ejecutar en el terminal" en Proyecto-> Configuración de ejecución.

+0

sé que ... pero quiero salida a dos lugares diferentes ... es por eso que su depuración salida. – Eugene

+0

Desafortunadamente no puedes hacer eso. – Bojan

+2

He desactivado "Ejecutar en terminal" y todavía no veo ningún resultado de mi aplicación. std :: cout, qDebug no genera nada – Dmitriy