2012-08-02 46 views

Antwort

2

Um qDebug an mehreren Orten zu umleiten, könnten Sie einen Code schreiben, vielleicht so:

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

Dieser Code funktioniert nicht. Nicht sicher, ob es wegen Tippfehlern im Codebeispiel (von denen mindestens eins zu sein scheint) oder weil Qt seit 2013 fortgeschritten ist und die Antwort veraltete Aufrufe verwendet. –

6

Sie können entweder alles ausgeben, um Qt Creator Application Bedienfeld Ausgabe auf die Konsole oder alles.

Der Vollständigkeit halber: Wenn Sie die gesamte Ausgabe im Panel anstatt der Konsole haben möchten, können Sie "Projekt im Terminal starten" unter Projekt-> Einstellungen ausführen deaktivieren.

+0

Ich weiß, dass ... aber ich möchte Ausgabe an zwei verschiedenen Orten ... deshalb seine Debug Ausgabe. – Eugene

+0

Leider können Sie das nicht tun. – Bojan

+2

Ich habe "Run in Terminal" deaktiviert und sehe immer noch keine Ausgabe von meiner App. std :: cout, qDebug gibt nichts aus – Dmitriy

Verwandte Themen